We normally have two lectures per week, one on Monday and one on Wednesday, both at 10:00-11:45. Occasionally, there is a lecture on Friday at 10:00. See below for a more precise schedule. See the official schedule on TimeEdit for information about the rooms.

Slides for the Textbooks

Slides by the textbook authors can be found at:

  1. Herlihy, Shavit: The Art of Multiprocessor Programming
  2. Ben-Ari: Principles of Concurrent and Distributed Programming

These slides are frequently used during our lectures. They also help link the lectures to the textbooks, which we strongly recommend you study.

Carlo/Sandro Slides from previous terms

These slides too are frequently referred to. They can be found here.

Lecture slides

We will try to make the slides/lecture notes available online on this page the day before each class. A new version of the slides may be uploaded after class according to what has actually been presented. We encourage you to take notes independent of the slides material available before class.

If you want to get an idea of the material covered in the course ahead of time, the lectures slides from previous course instances are available here

Class # Date Topic Slides Reading material1, 2
1 Monday, 20 January 2020 Bootcamp/Overview notes Note: Promela is not part of the official course requirements, but students are highly encouraged to attend this tutorial. A webinterface for Spin is available here.
2 Monday, 20 January 2020 Introduction to concurrent programming info Prasad’s slides Ben-Ari 1, 2.1-2.3. Slides and example code from the previous course1
3 Wednesday, 22 January 2020 Races, locks, and semaphores Prasad’s slides Ben-Ari 2.4-2.7, 2.12, 6.1-6.5, 6.9. Old slides and example code
4 Friday, 24 January 2020 Semaphores Prasad’s slides Ben-Ari 6.5-6.9. Old slides and example code
5 Monday, 27 January 2020 Monitors and protected objects Prasad’s slides Ben-Ari 7.1-7.3, 7.5
STOCKTAKING 1 all slides till now Carlo and Sandro slides 1, 2, 4 and 5. Ben-Ari Chaps 1, 2, 6 and 7. Herlihy/Shavit Chaps 1 and 2.
JT 29 January 2020 Tutorial on Java concurrency (by Nir Piterman) Nir’s slides code Please follow the README.txt file in the zipped folder to find the order in which the attached code should be read
6 Monday, 3 February 2020 Introduction to functional programming in Erlang Prasad’s slides Getting started in Erlang. Additional resource. Old slides
WM Friday, 7 February 2020 Concurrency in weak memory models (by Andreas Lööw) Andreas’ slides
7 Friday, 7 February 2020 Erlang Programming continued erlang programming slides
8 Monday, 10 February 2020 Introduction to message passing Prasad’s slides Sandro’s slides Additional·reading. The Promela tutorial on message passing is avilable here
9 Wednesday, 12 February 2020 Synchronization problems with message passing concurrency Sandro’s slides examples code
STOCKTAKING 2 all slides part 2 We leave for now the Erlang / message passing part of the course. This week and next we look at multi-core programming, from the Herlihy-Shavit textbook
10 Monday, 17 February 2020 Concurrent Objects and Linearizabilty H&S slide 1 H&S slide 2 These chapters were not covered in previous years, but set the scene for the remaining multi-core lectures
11 Wednesday, 19 February 2020 Spin Locks and Contention; and Parallelizing computations H&S slides Sandro’s slides Herlihy & Shavit Chap 7, 16.1, 16.4
12 Monday, 24 February 2020 Parallel linked lists slides examples Herlihy & Shavit 9. Slides and example code for these and other chapters of the course book are available on the book’s website.1
13 Wednesday, 26 February 2020 Lock free programming slides examples Herlihy & Shavit 10.1, 10.2, 10.5, 10.6, 18.1, 18.2
14a Monday, 2 March 2020 Formal reasoning examples and proofs, exam prep. proof-tutorial Tony Hoare’s paper, Huth-Ryan Chap 1 and 3
14b Wednesday, 4 March 2020 Formal reasoning, examples and proofs, continued: LTL, fairness, and progress. Exam prep. proof-tutorial wahl-fairness linear-temporal-logic Note for Wahl fairness: Uses notation G for box, and F for diamond
15 Monday, 9 March 2020 Last lecture! Loose ends. Handshake, tuple and broadcast communication. More proofs about programs. Some examples from exams and from the text-books. If you have questions you want answered, please tell us in advance via Canvas. slides Ben-Ari 4. For a good explanation of LTL, see Section 3.2 of the book “Logic in Computer Science” by Huth and Ryan, link

1 The lecture slides from the previous course instance (VT19) are reading material to supplement the current lectures, regardless of whether they were presented during class.

2 The lecture slides and code examples accompanying the course book The Art of Multiprocessor Programming by M. Herlihy & N. Shavit are available on the book’s official website.

Lecture material from previous editions

If you want to get an idea of the material covered in the course ahead of time, here are the lecture notes used in previous editions of the course.