105 credits of compulsory modules, 75 credits of optional modules.
COMM113: Deep Learning
Deep Learning is a highly in-demand skill in AI. In this module, you will study foundational and advanced deep learning techniques, understand how to build neural networks, and learn how to lead successful machine learning projects. You will learn key concepts, including, for example, convolutional neural networks (CNNs), recurrent neural networks (RNNs), and contemporary advancements such as Transformers, with practical applications across various domains. You will attend lectures providing in-depth coverage of theories and algorithms. In addition, you will attend lab sessions where you'll apply theoretical concepts to hands-on practices. This module is suitable for Computer Science, Mathematics and Engineering students and any students with experience in programming and foundational machine learning concepts.
COMM114: Generative AI
Generative models are widely used in many subfields of AI, making Generative AI a rapidly evolving and transformative field. In this module, you will study the theoretical foundations, for example, the probabilistic foundations and learning algorithms for generative models, variational autoencoder (VAE), generative adversarial networks (GANs), flow matching, and diffusion models. You will also study application areas that have benefitted from generative models. You will attend lecture sessions, complemented by lab sessions, allowing you to apply your knowledge through hands-on exercises. You will work with popular AI frameworks and generative AI libraries, gaining practical experience. This module is suitable for Computer Science, Mathematics and Engineering students and any students with experience in programming and deep learning.
COMM120: Reinforcement Learning
In this module, you will learn how intelligent agents make decisions by interacting with their environment and receiving feedback. You will study core reinforcement learning concepts alongside emerging topics such as human-in-the-loop training, preference learning, and aligning agent behaviour with human goals. You will explore how RL underpins modern AI systems, including large language models and autonomous agents, as well as its growing role in developing and enhancing machine reasoning capabilities. Through hands-on exercises, you will implement RL algorithms and experiment with real-world scenarios. By the end of the module, you will be able to design, train, and evaluate learning agents that operate safely and effectively in complex settings.
This module aims to introduce the theoretical foundations of reinforcement learning and sequential decision-making, and to develop your understanding of how learning agents can operate in complex and uncertain environments. It seeks to build your ability to design, implement, and evaluate reinforcement learning algorithms using modern machine learning tools. The module also aims to familiarise you with recent developments in reinforcement learning, while encouraging critical engagement with current research and real-world applications of reinforcement learning in modern AI systems.
COMM514: Research Project
In this module, you will work on a research problem in an area relating to your programme of study, applying the tools and techniques that you have learned throughout the modules of the programme. This is an independent project, supervised by an expert from the relevant area, and culminates in writing a dissertation in the form of a research paper, describing your research and its results.
Research topics can be selected from across the breadth of computer science, data science and related topics. The project may include theoretical analysis, as well as practical software implementation.
This module aims to give you in-depth experience of research in an area relating to your programme of study. It will help you prepare for projects both in an industry or commercial setting, as well as in further postgraduate research work, such as a PhD. The module builds on the knowledge and skills you have acquired in the taught modules of the programme to allow you to investigate an area of particular interest to you. It aims to give you experience of many aspects of research work, including problem formulation, literature review, planning, tool development, experimentation, analysis and presentation of results.
COMM040: Text Mining and Natural Language Processing
Text mining is the process of extracting insight from large collections of written documents. Recently, there has been immense progress in how computers understand human language. This means reviews, tweets, archives of legal documents, recipes and all kinds of text can now be effectively analysed. This module teaches you how to search, group, summarise and understand large corpuses of documents. The course will cover methods like topic modelling, sentiment analysis, translation and the use of Large Language Models to solve real world problems. The student should have taken or be taking a module on the basics of machine learning.
Students will understand and apply modern NLP methods to real world textual datasets. The focus will be on methods for generating insight from large collections of text, from practical first steps, like data cleaning and validation, to topic modelling using a variety of cutting-edge techniques.
COMM112: Design Methods for Human-Centred AI
Learn the skills needed to practice Human-centred design of Artificially Intelligent systems. You will learn how to use computational design thinking to empathise with people, ideate, prototype and evaluate AI systems. You will learn how to abstract AI problems by engaging with people, communities and contexts.? You will apply methods from Human-Computer Interaction to engage with users through participatory design practices.
Having used these methods to abstract Human Centred AI problems, you will learn how to investigate prototype solutions and critically analyse their strengths and weaknesses, both from a computational perspective and a human perspective.
You will attend a weekly class in which an expert in Human-centred AI will lead discussion of an aspect of Human Centred AI design and its implications for how relevant Artificial Intelligence technologies are likely to impact people.
This course is a hands-on, practice-oriented approach to learning Human-centred AI (HCAI) design, with a strong emphasis on the evaluation of AI systems from both technical and human perspectives. Methods covered will include design thinking, participatory design, A/B testing, think-aloud protocols, diary studies, eye tracking studies etc. These tools provide students with the skills required to work with people to understand their needs and desires, understand how and why they perform tasks as they do and design AI systems that work with and for them.
COMM115: Data Science at Scale
Data science and some machine learning technologies rely on large amounts of data to be effective and many commercial and scientific applications require the analysis of large quantities of heterogenous, noisy data on distributed machines. This module will examine the ways in which algorithms for data science can be implemented for large data and will discuss new algorithms specifically designed for large scale data. You will also work with large-scale distributed and cloud systems for storing and computing with big data.
Through theory and practice this module aims to equip you with an understanding of the principles of distributed computing, particularly on cloud-based systems, the ways in which data can be stored and accessed to allow efficient computation, and efficient algorithms for large-scale computation.
Distributed cloud computing will provide you with the underpinning knowledge required to develop and implement machine learning and artificial intelligence algorithms on distributed high-performance computing systems.
COMM116: Generative AI Applications
Generative AI is driving innovative applications in different sectors. In this module, you will familiarise yourself with the foundations and essential tools of generative AI and focus on its key applications across various domains and their potential impact on industries and society. You will design and implement generative AI techniques for real-world applications in domains such as healthcare, environment, art, and entertainment. You will attend lecture and lab sessions, where you will learn to analyse and fine-tune generative models to optimise their performance for your chosen application(s). This module is suitable for Computer Science, Mathematics and Engineering students and any students with experience in programming and machine learning.
Pre-requisite modules: COMM113 Deep Learning
COMM117: Large Language Models and Applications
Large Language Models (LLMs) have enabled powerful applications across various domains. In this module, you will learn key technologies, architectures, training and evaluation methods of LLMs, for example, GPT and BERT models. You will also learn the practical use cases and emerging trends of LLM applications. You will be able to analyse real-world problems and formulate effective solutions using LLMs, such as chatbots and machine translation. You will attend lecture and lab sessions, where you will learn to apply and analyse LLMs for your chosen application(s). This module is suitable for Computer Science, Mathematics and Engineering students and any students with experience in programming and machine learning.
This module aims to provide you with knowledge and skills to understand, analyse and apply LLMs, including for example, their architectures, training techniques, and practical applications. You will study key topics such as transformer models, GPT and BERT models, and fine-tuning. In this module you will also examine the use of LLMs in real-world scenarios, for example, text generation, text summarisation, and machine translation. You will work with relevant AI frameworks and tools, such as LLMs APIs, to develop LLM applications. Additionally, you will engage with ethical challenges and best practices in deploying LLMs. By the end of the module, you will gain hands-on experience in developing, applying and evaluating LLMs across a variety of domains.
ECMM422: Machine Learning
Machine learning has emerged mainly from computer science and artificial intelligence, and draws on methods from a variety of related subjects including statistics, applied mathematics and more specialized fields, such as pattern recognition and neural computation. Applications are, for example, image and speech analysis, medical imaging, bioinformatics and exploratory data analysis in natural science and engineering. This module will provide you with a thorough grounding in the theory and application of machine learning, pattern recognition, classification, categorisation, and concept acquisition. Hence, it is particularly suitable for Computer Science, Mathematics and Engineering students and any students with some experience in probability and programming.
In this data-driven era, modern technologies are generating massive and high-dimensional datasets. This module aims to give you an understanding of computational methods used in modern data analysis.
ECMM426: Computer Vision
How do we recognise objects and people? How can we catch a ball or navigate a busy room without collisions? These everyday tasks have challenged AI scientists for decades. Recent advances in computer vision have led to major improvements in applications such as face detection, body tracking, autonomous vehicles, and action recognition.
This module introduces the fundamentals of computer vision, covering both classical and state-of-the-art methods. You will gain a theoretical understanding of key algorithms, along with practical skills in image processing, feature extraction, object detection, segmentation, and deep learning for vision tasks. The course also explores 3D vision and modern topics such as video analysis and low-shot learning, providing a broad foundation for solving real-world vision problems.
ECMM445: Learning from Data
Artificially intelligent machines and software must assimilate data from their environment and make decisions based upon it. Likewise, we live in a data-rich society and must be able to make sense of complex datasets. This module will introduce you to machine learning methods for learning from data. You will learn about the principal learning paradigms from a theoretical point of view and gain practical experience through a series of workshops. Throughout the module, there will be an emphasis on dealing with real data, and you will use, modify and write software to implement learning algorithms. It is often useful to be able to visualise data and you will gain experience of methods of reducing the dimension of large datasets to facilitate visualisation and understanding.
The module will also cover some recent neural network architectures and related learning algorithms.
This module aims to equip you with the fundamentals of machine learning and at the same time discuss technical aspects of some well-known machine learning models and related learning algorithms. It will provide a thorough grounding in the theory and application of machine learning and statistical techniques for classification, regression and unsupervised methods (clustering and dimension reduction). The module will cover kernel methods and neural networks (feed-forward architectures only).
ECMM447: Social Networks and Text Analysis
The rise of the Web has created huge datasets relating to the interaction of users and online content. Much of this content is relational and is best understood using a network perspective (for example, hyperlinked web pages; users linking to content; users linking to users on social platforms). Much of this content consists of unstructured text (for example, webpages, blogs, social media posts) that requires computational methods for analysis at scale. In this module you will learn the core principles of social network analysis and computational text analysis, enabling you to gain insight from the rich data available on the Web.
The aim of this module is to equip you with a range of knowledge and skills needed to make effective use of data from the Web. This module will cover various topics in social network analysis and text analysis, which together allow relational and unstructured text data to be analysed at scale. The module will be taught using the Python language and various open-source packages.
The module will be taught in weekly lectures and associated practical work, together with individual self-study and labs. Lectures will introduce the topics of social network analysis and text analysis, accompanied by practical exercises based on lecture material.
ECMM450: Stochastic Processes
A stochastic process is one that involves random variables. A large number of practical systems within industry, commerce, finance, biology, nuclear physics and epidemiology can be described as stochastic and analysed using the techniques developed in this module. The systems considered may exist in any one of a finite, or possibly countably infinite, number of states. The state of a system may be examined continuously through time or at fixed and regular intervals of time.
You will study processes whose changes of state through time are governed by probabilistic laws, and you will learn how models of such processes can be applied in practice.
Pre-Requisite Modules:
ECMM461: High-Performance Computing
The demand for ever-increasing computational power drives the development and exploitation of high-performance computing that underpins leading edge research in computationally intensive engineering technologies fields. This module is designed to equip you with a solid foundation and useful skills in high-performance and distributed computing. In this module, you will learn about current high-performance computer architectures and how the computer architecture influences the performance of algorithms and programs. You will also develop skills in parallel algorithm design and parallel programming, and will gain experience of using a high-performance computing system.
This module aims to provide you with a thorough grounding in parallel programming and the architectures used in high-performance computing. After presenting the fundamental ideas and basic concepts of high-performance computing, the module outlines the architectures, components and parallel programming of high-performance computers. The module will introduce you to recent developments and future trends in architecture and algorithms in high-performance computing.