Computer Laboratory

Course pages 2016–17

Concurrent and Distributed Systems

Lecture notes

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

Corrections/changes to slides after lecture

Lecture 1:

An update has been made to Lecture 1 slide 11 to insert a missing "OS" block between "Proc(D)" and "Proc(A)", as asked about during the lecture.

Lecture 2:

The online slides have been changed to use GNU rather than Intel assembler syntax (swapping operand orders for MOV instructions), as this may be more familiar to students.

Lecture 4:

Slide 9 has been updated to make it more clear that the resources in the illustration can have multiple owners.

Lecture 7:

Slide 22 has been updated so that node numbers in the illustrated linked list are not covered up by the pop-ups.

Lecture 8:

Minor typo and formatting fixes.

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

  • To be published in the Lent term

Supervision material

Distributed Systems supervision questions will be posted in the Lent term.

Corrections/changes to supervision questions

Concurrent and Distributed Systems - supervision questions 2

Due to a formatting bug, the header for Question 2 (along with example transactions) was omitted from the generated PDF. This has now been corrected.

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:

Last year’s course materials are still available.