Randomness and Computation
Spring 2018
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.
 If you have not taken the
Algorithms
and Data Structures (ADS) course (or similar in another University),
you should take that first unless you are a very strong student.
 You can take a look at last year's exam paper
here
 All prospective students should do the
Self
test I have created. When you have finished (it will take an hour and
half or maybe two) drop me a message asking for solutions. You
should be able to do about 70% of the questions without Googling
or needing help  say 12 of the 17 questions. I'd also
expect you to be able to do at least 1 of the 2 proof questions at
the end, as we will be proving things quite a bit in class.
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.
Course Information
Course Outline
Here is a rough outline of the course material:
 Introduction: Las Vegas and Monte Carlo algorithms
 Elementary Examples: checking identities, fingerprinting
 Moments, Deviations and Tail Inequalities
 Balls and Bins, Coupon Collecting, stable marriage, routing
 Randomization in Sequential Computation
 Data Structures, Graph Algorithms
 Randomization in Parallel and Distributed Computation
 Algebraic techniques, matching, sorting, independent sets
 Randomization in Online Computation
 Online model, adversary models, paging, kserver
 The Probabilistic Method
 Threshold phenomena in random graphs, Lovasz Local Lemma
 Random Walks and Markov Chains
 Hitting and cover times, Markov chain Monte Carlo, mixing times
Coursework
Guidelines
Please read the following guidelines regarding coursework:

Academic Conduct Policy: Students are expected to adhere to
the academic conduct policy of the University; this policy can be found in full
here.

Late Coursework Policy: Please see here
for the late coursework policy of the School of Informatics.