Computer Science with Mathematics MSci, BSc

Year one – Compulsory modules

Procedural programming
This module introduces the fundamental skills of programming including, syntax, execution flow control and programming processes and contributes to developing Computer Science practitioners. (10 credits)

Probability and Statistics
In the modern scientific and technological world it is important to understand probabilistic arguments. The key ideas of probability and random variables are discussed, including concepts of prior and posterior distributions. (10 credits)

Number systems
This module exposes students to the basic objects of mathematics such as sets, number systems, and functions. Basic properties of these objects are explored using mathematical language. (15 credits)

Mathematics 1
This module consolidates basic material from A-level, extends the syllabus to include more advanced techniques, and introduces elements of the analysis required to formalise the subject. (25 credits)

Object oriented Programming
This module provides the fundamental knowledge for developing in an object oriented manner and develops transferable abstract modelling and problem solving techniques. (10 credits)

Introduction to Discrete Mathematics
This module provides the fundamental knowledge for developing in an object oriented manner and develops transferable abstract modelling and problem solving techniques. (10 credits)

Databases
This module provides a foundation in the design and implementation of databases with an emphasis on relational database systems. (10 credits)

Computer Processors
This module provides the full picture view of computer programming and computer implementation which is vital for future developments in compilers and computer architecture. (10 credits)

Mathematics 2
This module builds on the material of Mathematics 1 in introducing fundamental areas of mathematics. (25 credits)

Year two – Compulsory modules

Algorithms and Data Structures I
This module introduces the basics of algorithm design and analysis and provides students with the opportunity to practice these new skills on classical computer science algorithms and data structures. (10 credits)

Numerical Computation
Accuracy of floating-point computation, standard numerical algorithms for linear equation systems, nonlinear equations, ordinary differential equations and data interpolation. The design of robust and efficient implementations in code. (10 credits)

Computational Mathematics
This module introduces students to computational techniques, algorithms and numerical solutions. Students will learn basic programming using the language Python and apply computational techniques to the solution of mathematical problems. (10 credits)

Groups and Vector Spaces
The module will both introduce group theory as a beautiful and accessible example of the power of abstract algebra, and reinforce understanding of elementary linear algebra. (15 credits)

Vector Calculus
The module will both introduce group theory as a beautiful and accessible example of the power of abstract algebra, and reinforce understanding of elementary linear algebra. (15 credits)

Logic
This module is an introduction to mathematical logic introducing formal languages that can be used to express mathematical ideas and arguments. . (10 credits)

Algorithms and Data Structures II
This module focuses on key algorithms and data structures, that form the toolkit of a modern computer specialist. Our primary goal is to identify the most efficient solutions among those available and to provide a formal justification of that choice. (10 credits)

Artificial Intelligence
This module provides the foundations of artificial intelligence and considers the legal, ethical and social issues surrounding the use of artificial intelligence. (10 credits)

Formal Languages and Finite Automata
This module focuses on the formal specification of languages, the corresponding hierarchy of abstract machines and contributes to developing an understanding of design considerations of programming languages. (10 credits)

Data Mining
This module explores the knowledge discovery process and its application in different domains such as text and web mining. (10 credits)

Linear Differential Equations and Transforms
This module introduces a variety of techniques for the solution, subject to suitable boundary and initial conditions, of the basic partial differential equations of mathematical physics, which describe such ubiquitous phenomena as waves and diffusion. (10 credits)

Year three – Compulsory modules

Individual Project
The individual project is the culmination of three years of computer science studies and provides the opportunity for students to demonstrate a mastery of the subject. (40 credits)

Machine Learning
This module focuses on topics like neural networks, decision trees, support vector machines, Bayesian learning, instance-based learning, linear regression, clustering, reinforcement learning and deep learning. (10 credits)

Graph Algorithms and Complexity Theory
In this module we introduce a wide range of graph problems, classify them with respect to their computational complexity, and demonstrate how these methods extend to other computational problems. (10 credits)

Combinatorial Optimisation
This module develops abstract modelling and problem solving skills and contributes to developing computer science professionals who are capable of handling real world problems using advanced analytical methods. (10 credits)

Proof and Computation
The main goal is to prove Gödel's Incompleteness Theorems (1931) which show that if a formal theory has strong enough axioms then there are statements which it can neither prove nor refute. (15 credits)

Year three – Optional modules

You will be required to study 35-40 credits of optional modules, which cover topics such as Information Visualisation, Coding Theory, Graph Theory, Cryptography and Combinatorics.

Year four – Compulsory modules

Algorithms
On completion of this module, students should be able to appreciate the principles of algorithm design, implement and analyse some fundamental algorithms, understand the standard algorithms for sorting and searching, understand the difference between polynomial and exponential time algorithms and know how NP-hard problems can be dealt with in practice. (15 credits)

Group Project
The group project provides an opportunity for you to work on a major computing project as part of a team. The project will further develop both your team working/ project management skills and your technical knowledge and skills. (30 credits)

Year four – Optional modules

You will be required to study 75-80 credits of optional modules, which cover topics such as Scientific Computation, Knowledge Representation and Reasoning, Advanced Models and Sets, Advanced Mathematical Biology, Bio-Inspired Computing and Semantic Technologies and Applications.

All modules are subject to change.