The course aims to provide students with an overview of the main models and applications of deep learning. In particular, the first part of the course will introduce the basic concepts related to deep learning and to the training of artificial neural networks (Backpropagation, Dropout, BatchNorm, …). In the second part, the main types of neural models will be presented. Convolutional Neural Networks, Recurrent Neural Networks, Generative Adversarial Networks, Deep Reinforcement Learning will be introduced. In the final part of the course some applications of deep learning will be presented in the field of computer vision, robotics and natural language processing. Theoretical discussion will be complemented with lab in Python using open-source deep learning libraries.