Computer Laboratory

Course pages 2013–14

Concurrent and Distributed Systems

Concurrent Systems (Michaelmas term)

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

  • Concurrent Systems Lecture 1: Introduction to concurrency and threads [PDF, 2up]
  • Concurrent Systems Lecture 2: Mutual exclusion and process synchronisation [PDF, 2up]
  • Concurrent Systems Lecture 3: CCR, monitors, concurrency in practice [PDF, 2up]
  • Concurrent Systems Lecture 4: Safety and liveness [PDF, 2up]
  • Concurrent Systems Lecture 5: Concurrency without shared data; transactions [PDF, 2up]
  • Concurrent Systems Lecture 6: Further transactions [PDF, 2up]
  • Concurrent Systems Lecture 7: Crash recovery; lock-free programming; transactional memory [PDF, 2up]
  • Concurrent Systems Lecture 8: Concurrent systems case study [PDF, 2up]

Note that handouts #1-#7 were updated to reflect minor corrections on 23 October 2013.
Handout #8 was posted on 23 October 2013.
Further minor corrections were issued for handout #7 on 25 October 2013.

Supervision material

Supervision questions 1 were updated on 24 October to add a new question "0" on sempahores.
The second set of concurrent-systems supervision questions (on tranactions) were pasted on 1 November 2013.
A correction was issued on 7 November for the second set of concurrent-systems supervision questions: 1(d) has been fixed to refer to "B.credit()" rather than "A.debit()", and T1/T2 have been swapped.

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:

These may be a useful supplement to more theoretical supervision questions.

Distributed Systems (Lent term)

There are four handouts available for the second part of the course (Distributed Systems); further slide decks will follow shortly:

  • Distributed Systems Lecture 1: Introduction to distributed systems; RPC [PDF, 2up]
  • Distributed Systems Lecture 2: Network File System and Object-Oriented Middleware [PDF, 2up]
  • Distributed Systems Lecture 3: Practical RPC systems; clocks [PDF, 2up]
  • Distributed Systems Lecture 4: Clock synchronisation; logical clocks [PDF, 2up]
  • Distributed Systems Lecture 5: Consistent cuts, process groups, and mutual exclusion [PDF, 2up]
  • Distributed systems Lecture 6: to follow shortly
  • Distributed systems Lecture 7: to follow shortly
  • Distributed Systems Lecture 8: Security, AFS/Coda [PDF, 2up]

Slides on AFS/Coda, PubSub, and MOM in the Lecture 8 notes were not covered in lecture, and thus will not be examined directly. However, as AFS and Coda are case studies in several of the core ideas in earlier lectures -- distributed file systems, RPC, distributed clocks / versions, and multi-server replication, students would be well advised to review this material and discuss it with their supervisors.

Final notes from L6 and L7, presented by guest lecturer Malte Schwarzkopf, will be online shortly. Ini the interim, slides as presented may be found here: L6, L7.

Supervision material


Last year’s course materials are still available.