skip to primary navigationskip to content

Course pages 2021–22

Concurrent and Distributed Systems

This course will be delivered using pre-recorded lectures and in-person Q+A or Examples sessions.

The four timetabled Q+A or Examples sessions will be held in LT1 at the timetabled slots for lectures 3, 7, 11 and 15.

The 'portrait' timetable shows the first lecture being delivered in person, but this is not the case.

In addition, DJ Greaves plans to be demonstating in the Intel Lab for the C/C++ workshops as timetabled for that course, so please feel free to ask him about CC+DS aspects in those sessions.

Concurrent Systems

8 Lectures from DJ Greaves.

  • Lecture slides PDF (rev C).

  • Recorded videos are now uploaded: these are essentially last year's ones, slightly enhanced and broken into smaller chunks.

  • Learners' Guide: LINK

  • Get started examples sheet CS0.pdf

  • Primitives examples sheet CS1.pdf

  • Schedulling examples sheet CS2.pdf

  • Transactions examples sheet CS3.pdf

  • Lock-free and miscellaneous examples sheet CS4.pdf

Additional Materials

  • Dr Watson's useful notes on Java concurrency with some practical exercises TXT.

  • Examples Class 1 (14th Oct 2021) transcript and materials: LINK.

  • Examples Class 2 (28th Oct 2021) transcript and materials: LINK.

Distributed Systems

8 Lectures from Dr Martin Kleppmann.

  • Lecture notes (PDF) (including exercises)
  • Slides: slideshow and printable (PDF)
  • Lecture videos: on YouTube (publicly available) or mp4 files (Raven login required)
  • For distributed systems there will be two in-person examples classes with Dr Kleppmann: on 11 November 2021 and on 25 November 2021, both at 12 noon in LT1. These sessions do not add further content to the course, but will involve some live demos, discussion of example problems (including past exam questions), and opportunities for questions. Please attend if you can!


A few changes were made after the lecture notes went to print. Please refer to the online lecture notes for the latest version.

  • On slide 118, the second "if" condition (for log truncation) was corrected.
  • On slides 116, 117, and 118, some variables and parameters were renamed to be easier to follow.
  • In the text accompanying slide 118, in the sentence “The leader moves its commitLength forward and performs the total order broadcast delivery of the messages in the appropriate log entries.” should say “follower” instead of “leader".
  • On slide 120, the CommitLogEntries function was reformulated to be easier to understand. The reformulation of slide 120 turned to be incorrect (it failed to check that the last log entry to be committed was added the current term)! The online lecture notes have been reverted to the previous version of the CommitLogEntries function.

Last year’s course materials are still available.

Instructions for lecturers: how to edit this page