Course description: The goals of this course are twofold: to introduce various approaches to learning with neural networks, and to develop a scientific understanding of the power and limitations of these approaches. We discuss supervised learning and generative modelling with feed-forward networks and recurrent architectures. From the theoretical point of view, we will discuss the key questions surrounding neural networks - approximation, optimisation, generalisation, and representation learning - and review the current approaches to tackle them.