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 by the textbook authors can be found at:
These slides are frequently used during our lectures. They also help link the lectures to the textbooks, which we strongly recommend you study.
These slides too are frequently referred to. They can be found here.
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.
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.