This module covers the fundamentals of state-of-the-art neural networks architectures and the foundations of deep learning algorithms, introducing in detail feedforward neural networks, as well as more advanced topics such as convolutional neural networks, autoencoders, recurrent neural networks, generative adversarial networks, and graph neural networks. Students will also be introduced to concepts related to training and modelling with such architectures: backpropagation, regularisation, hyper-parameter tuning as well as optimisation techniques. These core principles and algorithms will be presented alongside coding challenges and example applications. 

The aims are to: 

Support students in the development of a breadth of knowledge and understanding in the fundamentals of neural networks and their applications. 
	Capacitate ML and AI practitioners in the development and deployment of deep neural architectures. 
	Provide an applied context for the use of fundamental concepts in object-oriented programming in the creation of programs for deep learning applications.
Learning outcomes:

On successful completion of the module, a student will be able to: 

Demonstrate understanding of the fundamental principles, theory, and approaches for learning with deep neural networks. 
Develop and validate the main variants of deep learning (such as feedforward and recurrent architectures), and their typical applications. 
Evaluate the quality and suitability of different deep learning methods for different data structures. 
Implement and use skilfully key concepts, issues, and practices when training and modelling with deep architectures. 
Describe and critically evaluate how deep learning fits within the context of other ML approaches and what learning tasks it is considered to be suited and not well suited to perform.
Content:

Introduction to neural networks and deep learning. 
	Training neural networks: Hyperparameter tuning, Regularization and Optimization. 
	Convolutional neural networks. 
	Recurrent neural networks. 
	Advanced architectures and topics.
Requisites:

To be eligible to select this module as an optional or elective, a student must be registered on a programme and year of study for which it is formally available.