Computer Laboratory

Course pages 2015–16

Concurrent and Distributed Systems

Lecture notes

There are eight handouts available for the first part of the course (Concurrent Systems):

Corrections: An update was made to Lecture 3 to correct slide 11's example of producer-consumer via monitors. The label for the producer signalling the consumer incorrectly stated that this occurred when the buffer was full; in fact, the signal is generated (as the code example shows) when the buffer is no longer empty.

There are eight handouts available for the second part of the course (Distributed Systems):

  • Lecture 1: Introduction to distributed systems; RPC
  • Lecture 2: Network File System and Object-Oriented Middleware
  • Lecture 3: Practical RPC systems; clocks
  • Lecture 4: Clock synchronisation; logical clocks
  • Lecture 5: Consistent cuts, process groups, and mutual exclusion
  • Lecture 6: Elections, consensus, and distributed transactions
  • Lecture 7: Replication in distributedystems, CAP, case studies
  • Lecture 8: PubSub; Security; NASD/AFS/Coda

Supervision material

Many of the ideas in concurrent systems can feel quite abstract in the absence of real-world experience; more glibly put, you can't understand a race condition without having debugged one! An introduction to concurrency primitives in Java, as well as several practical exercises, can be found here:

Additional material

No additional material has been made available yet.

Last year’s course materials are still available.