This is the webpage for a 16-lecture course in Algorithms that was given to undergraduate mathematicians at Cambridge in early 2010. The aim was to give a broad outline of the subject, as well as to illustrate the techniques that are used in designing algorithms. Here are examples of the types of things that were covered in the course:

How many ways are there to divide a regular 50-gon into triangles?

Given a large connected network of computers, how do I find out - quickly! - which of them, if broken, would disconnect the network?

There are N guys and M girls, and I want to play matchmaker. I know which of the guy-girl pairs get on well. How many happy couples can I form? And how is this related to traffic flow on the Internet?

For a more detailed syllabus, see the course schedule: pdf, html.

The lectures were videoed and also supplemented by example sheets, supervisions, challenges and an online system with programming exercises. Many of these things would not have materialised were it not for the generous assistance of Freddie Manners and Ludwig Schmidt, and I am very grateful for their help. I would also like to thank Jacob Davis for kindly proofreading all the lectures and making many useful suggestions, as well as Carl Turner and Matvey Soloviev for taking the time to type up notes for the course and offering to make their work freely available.