Core modules
Your first 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 you will develop a rigorous understanding of the subject's theoretical basis which will prepare you for later specialisation
In your third 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 of your course you are expected to study a core group of modules and make up the required normal load for the 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
Programming for Computer Scientists
In this module whatever your starting point you will begin your professional understanding of computer programming through problem-solving and fundamental structured and object-oriented programming You will learn the Java programming language through practical work centred on the Warwick Robot Maze environment which will take you from specification to implementation and testing Through practical work in object-oriented concepts such as classes encapsulation arrays and inheritance you will end the course knowing how to write programs in Java and through your ability to analyse errors and testing procedures be able to produce well-designed and well-encapsulated and abstracted 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 2022 23 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 2022 23 of study)
Discrete Mathematics and its Applications 1
In this foundation module you’ll learn the basic language concepts and methods of discrete mathematics while developing your appreciation of how these are used in algorithms and data structures By the end you should be able to appreciate the role of formal definitions mathematical proofs and underlying algorithmic thinking in practical problem-solving You’ll acquire knowledge of logic sets relations and functions and learn summation techniques (manipulations and finite calculus) and concepts including asymptotics and the big-O notation to prepare you for more advanced techniques in computer science
Read more about the Discrete Mathematics and its Applications 1 moduleLink opens in a new window including the methods of teaching and assessment (content applies to 2022 23 of study)
Discrete Mathematics and its Applications 2
During this module you will build on your foundations in discrete mathematics through the study of concepts such as discrete probability and number theory; learning how to apply these methods in problem-solving By the end of your course you’ll be able to use algebraic techniques (including linear and matrix algebra) to analyse basic discrete structures and algorithms and understand the importance of asymptotic notation and be able to use it to analyse asymptotic performance for some basic algorithmic examples Also you will study the properties of graphs and related discrete structures and be able to relate these to practical examples
Read more about the Discrete Mathematics and its Applications 2 moduleLink opens in a new window including the methods of teaching and assessment (content applies to 2022 23 of study)
Linear Algebra
Linear algebra addresses simultaneous linear equations You will learn about the properties of vector spaces linear mappings and their representation by matrices Applications include solving simultaneous linear equations properties of vectors and matrices properties of determinants and ways of calculating them You will learn to define and calculate eigenvalues and eigenvectors of a linear map or matrix You will have an understanding of matrices and vector spaces for later modules to build on
Read more about the Linear Algebra moduleLink opens in a new window including the methods of teaching and assessment (content applies to 2022 23 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 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 2022 23 of study)
Calculus 1Link opens in a new window
Calculus 2Link opens in a new window
Sets and Numbers
It is in its proofs that the strength and richness of mathematics is to be found University mathematics introduces progressively more abstract ideas and structures and demands more in the way of proof until most of your time is occupied with understanding proofs and creating your own Learning to deal with abstraction and with proofs takes time This module will bridge the gap between school and university mathematics taking you from concrete techniques where the emphasis is on calculation and gradually moving towards abstraction and proof
Read more about the Sets and Numbers moduleLink opens in a new window including the methods of teaching and assessment (content applies to 2022 23 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 including Chebyshev’s and Cauchy-Schwarz inequalities The module ends with a discussion of the celebrated Central Limit Theorem
Read more about the Introduction to Probability moduleLink opens in a new window including the methods of teaching and assessment (content applies to 2022 23 of study)
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 24 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 2022 23 of study)
Formal Languages
You will gain a fundamental understanding of formal languages and how the Chomsky hierarchy classifies them You’ll study techniques for exploring the regularity of languages using closure properties and pumping lemmas whilst also considering automata models alongside the notion of computability These concepts are central to computer science and completion will see you able to specify between and translate various forms of formal language descriptions You’ll learn methods of lexical analysis and parsing and be able to argue whether a formal language is regular or context free The teachings will discuss Turing machines and philosophical concepts such as decidability reducibility and the halting problem
Read more about the Formal Languages moduleLink opens in a new window including the methods of teaching and assessment (content applies to 2022 23 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 2022 23 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 2022 23 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 2022 23 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 2022 23 of study)
Optional modules
Optional modules can vary from to Example optional modules may include
Professional Skills
Functional Programming
Computer Security
Logic and Verification
Groups and Rings
Combinatorial Optimisation
Introduction to Number Theory
Metric Spaces
Stochastic Processes
Introduction to Mathematical Statistics
The precise modules available to students may depend on module prerequisites (ie for some module choices it is necessary for you to have taken a particular module in a previous)
Show less