Course pages 2015–16
Concurrent and Distributed Systems
Lecture notes
There are eight handouts available for the first part of the course (Concurrent Systems):
- Lecture 1: Introduction to concurrency, threads, and mutual exclusion
- Lecture 2: More mutual exclusion, semaphores, producer-consumer, and MRSW
- Lecture 3: CCR, monitors, and concurrency in practice
- Lecture 4: Safety and liveness
- Lecture 5: Concurrency without shared data; transactions
- Lecture 6: Further transactions
- Lecture 7: Crash recovery, lock-free programming, and transactional memory
- Lecture 8: Case study: FreeBSD kernel concurrency
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 (2-up)
- Lecture 2: Network File System and Object-Oriented Middleware (2-up)
- Lecture 3: Further RPC and OOM systems; Clocks (2-up)
- Lecture 4: Clock synchronisation; logical clocks (2-up)
- Lecture 5: Consistent cuts, process groups, and mutual exclusion (2-up)
- Lecture 6: Elections, distributed transactions, and replication (2-up)
- Lecture 7: Replication in distributed systems, CAP, case studies (2-up)
- Lecture 8: PubSub; Security; NASD/AFS/Coda (2-up)
Corrections: An update was made to Lecture 2 to correct slide 19: arguments of return values should have read arguments or return values. An update was made to Lecture 3 to clarify slide 16: in REST, "POST" is the referred create operation; "PUT" overwites an existing object (but can also be used to create); and "PATCH" is a newer operation to perform a partial update of an object "in place" on the server.
Supervision material
- Concurrent and Distributed Systems - supervision questions 1: Semaphores, generalised producer-consumer, and priorities
- Concurrent and Distributed Systems - supervision questions 2: Transactions
- Concurrent and Distributed Systems - supervision questions 3: RPCs and time
- Concurrent and Distributed Systems - supervision questions 4: Transparency, RPC, distributed objects, leadership and replication
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.