One of the most remarkable developments in Computer Science over the past 30 years has been the realization that the ability of computers to toss coins can lead to algorithms that are more efficient, conceptually simpler and more elegant that their best known deterministic counterparts. Randomization has by now become a ubiquitous tool in computation.
This course will survey several of the most widely used techniques in this context, illustrating them with examples taken from algorithms, random structures and combinatorics. Our goal is to provide a solid background in the key ideas used in the design and analysis of randomized algorithms and probabilistic processes.
Students taking this course should have already completed a good Algorithms courses (with theoretical underpinnings), and have excellent Maths.
I will be adding a "self-test" to this page in week 0 for MSc students to take, to check whether they have the right background to take this course
We have published Last year's Survey report based on feedback from 2016/17 students. I have also written a response to this, describing improvements to be made this year.