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
Handout #8 was posted on 23 October 2013.
Further minor corrections were issued for handout #7 on 25 October 2013.
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.
- Concurrent systems supervision questions 1: Semaphores, generalised producer-consumer, and priorities
- Concurrent systems supervision questions 2: Transactions
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.
- Distributed systems sample supervision questions 1 (courtesy Alastair Beresford)
- Distributed systems sample supervision questions 2 (courtesy Alastair Beresford)
Last year’s course materials are still available.