The modules offered in each year are listed below.

The progression requirements, year weightings and degree classification thresholds can be found in the corresponding programme specification, which can be found here: https://www.imperial.ac.uk/staff/tools-and-reference/quality-assurance-enhancement/programme-information/programme-specifications/

Further details of the assessment breakdown for each degree/year combination can be found from the corresponding year notice boards:

https://www.imperial.ac.uk/computing/current-students/course-admin/noticeboards/

The regulations for all undergraduate taught programmes of study, including the re-sit policy on failed modules, can be found here: https://www.imperial.ac.uk/about/governance/academic-governance/regulations/2022-23-regulations-a/

# Year One

## Academic year 23-24

## Core

## Autumn

- 40001 Introduction to Computer Systems
- 40007 Introduction to Databases
- 40016 Calculus
- COMPM0101 Introduction to DoC Systems

## Autumn and Spring

- 40018 Discrete Mathematics, Logic & Reasoning
- 40018A Discrete Mathematics, Logic & Reasoning (Part 1)

## Autumn, Spring and Summer

## Spring

## Extracurricular

## Autumn

## Autumn, Spring and Summer

- COMPM0193 Additional Tuition
- COMPM0701 Programming Competition Training
- COMPM0804 Student Support and Wellbeing

# Year Two

## Academic year 23-24

## Compulsory

## Autumn

- 50001 Algorithm Design and Analysis
- 50002 Software Engineering Design
- 50003 Models of Computation
- 50004 Operating Systems

## Autumn and Spring

## Spring

- 50005 Networks and Communications
- 50006 Compilers
- 50007.2 Introduction to Prolog
- 50008 Probability and Statistics

## Spring and Summer

## Summer

## Elective - Choose 5 ECTS (should be equivalent to 1 module)

## Spring

## Extracurricular

## Autumn

## Autumn, Spring and Summer

# Year Three

## Academic year 23-24

## Core

## Summer

## Elective - Choose from 25 to 30 ECTS (should be equivalent to 5 to 6 modules) from the following list

## Autumn

- 60001 Advanced Computer Architecture
- 60012 Introduction to Machine Learning
- 60016 Operations Research
- 60023 Type Systems for Programming Languages
- 60032 Networked Systems
- 70015 Mathematics for Machine Learning

## Spring

- 60003 Communicating Computer Science in Schools
- 60005 Graphics
- 60006 Computer Vision
- 60008 Custom Computing
- 60017 System Performance Engineering
- 60019 Robotics
- 60021 3rd Year Software Engineering Group Project (10 ECTS)

## Selective 1 - Choose from 10 to 20 ECTS (should be equivalent to 2 to 4 modules) from the following list

## Autumn

## Spring

## Compulsory - Choose from 5 to 7.5 ECTS (should be equivalent to 1 module) from the following list

## Autumn and Spring

## Elective - Choose from 0 to 7.5 ECTS (should be equivalent to 0 to 1 modules) from the following list

## Autumn and Spring

## Extracurricular

## Autumn

## Autumn, Spring and Summer

# Year Four

## Academic year 23-24

## Core

## Autumn

## Autumn, Spring and Summer

## Elective - Choose from 0 to 25 ECTS (should be equivalent to 0 to 5 modules) from the following list

## Autumn

- 70005 Complexity
- 70006 Computational Finance
- 70015 Mathematics for Machine Learning
- 70017 Principles of Distributed Ledgers
- 70020 Program Analysis
- 70022 Scalable Systems and Data
- 70028 Reinforcement Learning
- 70068 Scheduling and Resource Allocation
- 70086 Advanced Computer Architecture
- 70100 Computational Neurodynamics
- 70101 Human-Robot Interaction
- 70103 Statistical Information Theory

## Spring

- 70001 Advanced Computer Graphics
- 70007 Computational Optimisation
- 70009 Cryptography Engineering
- 70010 Deep Learning
- 70014 Machine Learning for Imaging
- 70016 Natural Language Processing
- 70021 Quantum Computing
- 70031 Modal Logic for Strategic Reasoning in AI
- 70067 Robot Learning
- 70070 Custom Computing
- 70098 Methods and Tools in the Theory of Computing
- 70105 Deep Graph-Based Learning
- 70889W Non-Euclidean Methods in Machine Learning

## Selective 1 - Choose from 10 to 25 ECTS (should be equivalent to 2 to 5 modules) from the following list

## Autumn

- 70018 Privacy Engineering
- 70023 Scalable Software Verification
- 70025 Software Engineering for Industry

## Spring

## Elective - Choose from 0 to 12.5 ECTS (should be equivalent to 0 to 2 modules) from the following list

## Autumn and Spring

- COMPM0451 External Module I (5 ECTS)
- COMPM0452 External Module I (7.5 ECTS)
- COMPM0453 External Module II (5 ECTS)