This module comprises a selection of topics in Probability and an introduction to the foundations of the Theory of Computation. The final goal of the module is to develop a detailed understanding of the design and analysis of randomised algorithms. The module is aimed at students with interest in theoretical aspects of computing, graph theory, combinatorics, statistics or data science. Structures arising throughout the module also play important roles in other settings, for example, in stochastic models in finance.

The module is structured into two parts: Randomness and Computation. The first part of the module (Randomness) covers advanced techniques in probability theory including classical concentration inequalities, martingale theory and an introduction to random graphs. This part of the module also treats simple randomised algorithms such as randomised Quicksort. The second part of the module (Computation) provides an introduction to the Theory of Computation covering topics such as (randomised) complexity classes, P vs. NP, Las Vegas and Monte Carlo algorithms and decidability. The module concludes with the presentation of the design and the analysis of several efficient randomised algorithms, which provide approximate solutions to computationally hard problems such as satisfiability and Max-cut. In each part of the module practical examples supplement and illustrate the theoretical concepts developed.

Learning Outcomes

By the end of the module students should be able to:

Understand the concept of (martingale) concentration inequalities and apply these in standard situations

Apply the techniques introduced in the course to the analysis of random graphs and related problems

Demonstrate an understanding of the concepts of complexity classes and their connections

Understand the efficiency of randomised algorithms in the study of hard problems

Assessment

31131-03 : Raw Module Mark : Coursework (100%)

Assessment Methods & Exceptions

3 hour Written Unseen Examination (80%); In-course Assessment (20%).