Core modules
Your first year will establish the foundations of Discrete Mathematics and its applications, covering proof, formal arguments, rigour and calculations, as well as mathematical reasoning, combinatorial analysis and discrete structures.
In your second year, you will develop a rigorous understanding of the subject's theoretical basis, which will prepare you for later specialisation.
In your third year, you will work alongside academics on an individual project as well as focusing on applications of Discrete Mathematics to Computer Science, and completing advanced modules on algorithms and computation.
In each year of your course, you are expected to study a core group of modules and make up the required normal load for the year by choosing a set of optional modules. There is a choice of optional modules available and there may be requirements to be satisfied by the choices: that a minimum number be chosen from a specific list.
All students complete Refresher Mathematics before the start of term, a 0 credit module designed to reinforce your existing mathematical knowledge.
Year One
Refresher Mathematics
This is a pre-sessional course for incoming first-year undergraduates from mathematics and joint-mathematics courses. The aim is to refresh A Level mathematics and certain core items from further mathematics in preparation for starting their degree.
Read more about the Refresher Mathematics module,Link opens in a new window including the methods of teaching and assessment (content applies to 2024/25 year of study).
Programming for Computer Scientists
This module aims to help you develop your programming skills, regardless of your starting skill level. You will develop problem solving skills through the lens of procedural and object-oriented programming. Using the Java programming language, you will engage with practical work that shall enable you to learn concepts such as classes, encapsulations, arrays, inheritance and advanced topics such as multi-threading and reflection. By engaging with the Warwick Robot Maze environment, you can expect to gain skills in errors analysis and debugging that will help you produce well-designed and well-tested code.
Read more about the Programming for Computer Scientists moduleLink opens in a new window, including the methods of teaching and assessment (content applies to 2024/25 year of study).
Design of Information Structures
Following on from Programming for Computer Scientists, on the fundamentals of programming, this module will teach you all about data structures and how to program them. We will look at how we can represent data structures efficiently and how we can apply formal reasoning to them. You will also study algorithms that use data structures. Successful completion will see you able to understand the structures and concepts underpinning object-oriented programming, and able to write programs that operate on large data sets.
Read more about the Design of Information Structures moduleLink opens in a new window, including the methods of teaching and assessment (content applies to 2024/25 year of study).
Introduction to Discrete Mathematics
Discrete mathematics includes the study of logic, algorithmic thinking, sets and finite calculus. The focus of this module is on the application of these concepts in relation to algorithms and data structures in modern computer science. The tools taught in this module provide a core foundation that will allow you to grow your understanding of mathematical and algorithmic processes and be able to apply them in problem-solving. You’ll acquire knowledge on a broad range or core principles, such as logic, sets, relations and functions. As well as this, more advanced topics such as summation techniques (manipulations and finite calculus), asymptotics and big-O notation are covered.
Read more about the Introduction to Discrete Mathematics moduleLink opens in a new windowLink opens in a new window, including the methods of teaching and assessment (content applies to 2025/26 year of study).
Logic and Automata
Computer Science is founded on logic and abstract machines (automata) to solve computational problems. Whether a computational problem is tractable in the first place or not, requires, for example, understanding of what Turing machines are, and of concepts such as decidability, reducibility and the halting problem. In this module, you will be introduced to formal methods for specifying and analysing the behaviour of computational systems, through studying algorithms and proof calculi for verification, as well as associated techniques, such as propositional and predicate logic and comparing the semantics of a variety of logics. In addition to learning about the basic connections between mathematical logic, formal languages, automata theory and verification by model checking, you will also learn and practise proof techniques for reasoning about the limits of various computational models.
Read more about the Logic and Automata moduleLink opens in a new window, including the methods of teaching and assessment (content applies to 2025/26 year of study).
Linear Algebra
The branch of maths treating simultaneous linear equations is called linear algebra. The module contains a theoretical algebraic core, whose main idea is that of a vector space and of a linear map from one vector space to another. It discusses the concepts of a basis in a vector space, the dimension of a vector space, the image and kernel of a linear map, the rank and nullity of a linear map, and the representation of a linear map by means of a matrix. These theoretical ideas have many applications, which will be discussed in the module. These applications include: Solutions of simultaneous linear equations. Properties of vectors. Properties of matrices, such as rank, row reduction, eigenvalues and eigenvectors. Properties of determinants and ways of calculating them.
Read more about the Linear Algebra moduleLink opens in a new window, including the methods of teaching and assessment (content applies to 2024/25 year of study).
Calculus 1/2
Calculus is the mathematical study of continuous change. In this module there will be considerable emphasis throughout on the need to argue with much greater precision and care than you had to at school. With the support of your fellow students, lecturers and other helpers, you will be encouraged to move on from the situation where the teacher shows you how to solve each kind of problem, to the point where you can develop your own methods for solving problems. By the end of the year you will be able to answer interesting questions like, what do we mean by `infinity’?
Read more about these modules, including the methods of teaching and assessment (content applies to 2024/25 year of study):
Sets and Numbers
Mathematics can be described as the science of logical deduction - if we assume such and such as given, what can we deduce with absolute certainty? Consequently, mathematics has a very high standard of truth - the only way to establish a mathematical claim is to give a complete, rigorous proof. Sets and Numbers aims to show students what can be achieved through abstract mathematical reasoning.
Read more about the Sets and Numbers moduleLink opens in a new window, including the methods of teaching and assessment (content applies to 2024/25 year of study).
Introduction to Probability
This module takes you further in your exploration of probability and random outcomes. Starting with examples of discrete and continuous probability spaces, you will learn methods of counting (inclusion-exclusion formula and multinomial coefficients), and examine theoretical topics including independence of events and conditional probabilities. You will study random variables and their probability distribution functions. Finally, you will study variance and co-variance and famous probability theorems.
Year Two
Combinatorics
In this module you learn the basics about discrete structures that lie at the heart of many real-world problems. A key notion is that of a graph, which is an abstract mathematical model for a network, such as a street network, a computer network, or a network of friendships. You learn to argue about these structures formally, and to prove interesting theorems about them. This will train your ability to think outside of the box.
Read more about the Combinatorics moduleLink opens in a new window, including the methods of teaching and assessment (content applies to 2024/25 year of study).
Algorithmic Graph Theory
This module is concerned with studying properties of graphs and digraphs from an algorithmic perspective. The focus is on understanding basic properties of graphs that can be used to design efficient algorithms. The problems considered will be typically motivated by algorithmic/computer science/IT applications.
Read more about the Algorithmic Graph Theory moduleLink opens in a new window, including the methods of teaching and assessment (content applies to 2024/25 year of study).
Algorithms
Data structures and algorithms are fundamental to programming and to understanding computation. In this module, you will be using sophisticated tools to apply algorithmic techniques to computational problems. By the close of the course, you’ll have studied a variety of data structures and will be using them for the design and implementation of algorithms, including testing and proofing, and analysing their efficiency. This is a practical course, so expect to be working on real-life problems using elementary graph, greedy, and divide-and-conquer algorithms, as well as gaining knowledge on dynamic programming and network flows.
Read more about the Algorithms moduleLink opens in a new window, including the methods of teaching and assessment (content applies to 2024/25 year of study).
Introduction to Mathematical Statistics
The purpose of this module is to provide a systematic introduction to major ideas of statistical inference, with an emphasis on likelihood methods of estimation and testing. The module aims are to introduce systematically the major ideas of statistical inference with an emphasis on likelihood methods of estimation and testing.
A good understanding of these ideas is crucial preparation for further investigation of applied and methodological statistics, machine learning, and the core statistical aspects of data science. The module will consolidate and extend the initial understanding of probability developed in the first-year module ST120 Introduction to Probability.
Read more about the Introduction to Mathematical Statistics moduleLink opens in a new window, including the methods of teaching and assessment (content applies to 2024/25 year of study).
Year Three
Discrete Mathematics Project
Through this practical module, you’ll gain experience in undertaking a significant individual design and development exercise in discrete mathematics, from conception through to design, implementation and delivery. Starting with the selection of a topic and location of a suitable supervisor, you’ll be responsible for regular progress reports, and a presentation of your final results alongside a detailed written report. In addition to enhancing your technical knowledge, this process will help you develop important skills such as self-discipline, time management, organisation and professional communications.
Read more about the Discrete Mathematics Project moduleLink opens in a new window, including the methods of teaching and assessment (content applies to 2024/25 year of study).
Complexity of Algorithms
Are you ready for a challenge? In this module, you’ll learn to analyse the intrinsic difficulty of various computational challenges, and to specify variations that may be more tractable. This will require you to learn notions of the complexity of algorithms, and what makes some computational problems harder than others. You’ll undertake a close study of what makes an algorithm efficient, and study various models of computation, in particular, models of classical deterministic and non-deterministic computations.
Read more about the Complexity of Algorithms moduleLink opens in a new window, including the methods of teaching and assessment (content applies to 2024/25 year of study).
Approximation and Randomised Algorithms
In this module, you will gain an introductory understanding of approximation and randomised algorithms, which often provide a simple, viable alternative to standard algorithms. You’ll learn the mathematical foundations underpinning the design and analysis of such algorithms. Whilst gaining experience of using suitable mathematical tools to design approximation algorithms and analyse their performance. You’ll also learn techniques for designing faster but weaker algorithms for particular situations, such as large running times. You can expect to cover important concepts, including linearity of expectation, Chernoff bounds, and deterministic and randomised rounding of linear programs.
Read more about the Approximation and Randomised Algorithms moduleLink opens in a new window, including the methods of teaching and assessment (content applies to 2024/25 year of study).
Optional modules
Optional modules can vary from year to year. Example optional modules may include:
- Professional Skills
- Data Analytics
- Functional Programming
- Computer Security
- Groups and Rings
- Combinatorial Optimisation
- Introduction to Number Theory
- Metric Spaces
- Stochastic Processes
The precise modules available to students may depend on module prerequisites (i.e. for some module choices it is necessary for you to have taken a particular module in a previous year).