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:
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.
Full lecture notes by Carl Turner: pdf
Videos of the lectures
Handout 1: Graph Terminology (pdf)
Handout 2: Dijkstra with Heaps (pdf)
Example sheet 1: pdf
Example sheet 2: pdf
Example sheet 3: pdf
Course leaderboard and challenges
Algorithms - Data Structures and Computational Complexity, a sequel given in Lent 2011.
E-mail: tucac2010 AT gmail.com