Department of Computer Science and Technology

Course pages 2017–18

Concurrent and Distributed Systems

Lecture notes

There are sixteen handouts available for Concurrent and Distributed Systems in Michaelmas Term 2017:

  1. Lecture 1: Introduction to concurrency, threads, and mutual exclusion
  2. Lecture 2: More mutual exclusion, semaphores, and producer-consumer relationships
  3. Lecture 3: CCR, monitors, and concurrency in practice
  4. Lecture 4: Deadlock, Livelock, and Priority Inversion
  5. Lecture 5: Concurrency without shared data, composite operations and transactions, and serialisability
  6. Lecture 6: Isolation vs. Strict Isolation, 2-Phase Locking (2PL), Time Stamp Ordering (TSO), and Optimistic Concurrency Control (OCC)
  7. Lecture 7: Crash recovery, lock-free programming, and transactional memory
  8. Lecture 8: Case study - FreeBSD kernel concurrency
  9. Lecture 9: Introduction to distributed systems, client-server computing, and RPC
  10. Lecture 10: Case study: the Network File System (NFS)
  11. Lecture 11: Object-Oriented Middleware (OOM), clocks and distributed time
  12. Lecture 12: Clock synchronization and logical time
  13. Lecture 13: Vector clocks, consistent cuts, process groups, and distributed mutual exclusion
  14. Lecture 14: Elections, distributed transactions, and replication
  15. Lecture 15: Replication, quorums, consistency, CAP, and Amazon/Google case studies
  16. Lecture 16: Security and NASD/AFS/Coda case studies

Corrections/changes to slides after lecture

There are not currently any corrections to the slide decks.

Supervision material

Corrections/changes to supervision exercises

  • Supervision 1, question 1 has been clarified to better explain that the goal is to develop replacement consumer pseudocode.

Optional additional 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 optional practical exercises, can be found here:

Prior years

Last year’s course materials are still available.