This course provides an elementary hands-on introduction to deep learning. Students taking this course will learn the theories, models, algorithms, implementation and recent progress of deep learning, and obtain empirical experience on training deep neural networks. Topics covered will include linear classifiers, multilayer neural networks, back propagation and stochastic gradient descent, convolutional neural networks, recurrent neural networks, generative adversarial networks, deep network compression and deep learning based domain adaptation. Applications of deep learning to typical computer vision problems such as object detection and segmentation will also be included. Coursework will consist of programming assignments in PyTorch. After this course, students will learn to implement, train and debug their own neural networks.