In this course, the textbook plays an important role, and the lectures will be keyed to it whenever possible. We will use slides from the book as well as slides of our own. These will not in general be available before the lecture, as the content of each lecture is decided dynamically depending on classroom discussions, Many of these discussions will use the blackboard.

It is therefore important that you bring a notebook and make your own notes, and that you understand that the slides are in no sense "lecture notes", or any kind of substitute for the textbook or even for the lectures. Slides are visual aides for the lecture, that is all. After the lecture, they may help you remember what was discussed.

In order to get an idea of the material we will cover in the course you can have a look at the lectures in previous editions of the course.

All the Erlang's material for the lectures is here

Lecture slides and reading notes

Lecture 1 on 16/08/29


Slides: [.pdf]

Lecture 2 and 3 on 16/09/01 and 16/09/02

Lecture 2: State diagrams, interleaving, atomic actions, critical sections

Lecture 3: Semaphores, and brief introduction to monitors and protected objects

Slides: [.pdf]

The goal for the first week was to get past introduction (including to the critical section problem), and get to semaphores, monitors and protected objects. We did do semaphores in some detail, but only saw one program using protected objects. We only just mentioned what monitors are.

  1. If you have the TEXTBOOK, we have so far covered the following sections

    2.2, 2.4, 2.5.
    3.1, 3.2, 3.3. We did not do 3.4 and 3.5 in any detail, but you should be able to read them now.
    6.1, 6.2, 6.3, 6.7

    We mentioned monitors very briefly, instead looking at protected objects in 7.10.

    If you want to read up on monitors, look up 7.1, 7.2, 7.3, 7.4, 7.6.

  2. If you do not have the textbook, look up the WIKIPEDIA pages

    Wikipedia does not have an entry called protected objects but has a page on Ada, which has 4 paragraphs on the topic. See also

  3. My SLIDES, posted on the course website, should be of some help. From Ben-Ari’s slides, available from

    we looked at the following:
    Algorithm Slide page(as counted by Acrobat)
    2.1 2.3 7
    2.2 2.4 8
    2.5 9
    2.6 10
    2.7 11
    2.3 2.12 16
    2.13 17
    2.4 2.14 18
    2.15 19
    2.16 20
    3.1 3.1 55
    3.2 3.3 57
    3.5 3.9 63


    Algorithm Slide page(as counted by Acrobat)
    6.1 6.2 112
    6.2 6.3 113
    6.4 114
    6.3 6.5 115
    6.4 6.6 116
    6.8 6.12 122
    6.8 6.47,48,49 157,158,159

Next week, Raul will do concurrency in Java. I will do two lectures on message passing (Chap 8 in the textbook) + an introduction to Functional Programming (F.P.)

Lecture 4 on 16/09/05

Concurrency in Java

Source code of the examples used in the lecture: .tar.gz

You can download the the java decompiler we used (jad) in the following mirror

Lecture 5 and 6 on 16/09/08 and 16/09/09

a. Introduction to FP, b. Message Passing

Slides: [.pdf]

Erlang Tutorials


Notes: [HTML]


Notes: [HTML]

Lecture 9 on 16/09/19

Linda (or, ”Spaces”)

Slides: [.pdf]

Lecture 10 on 16/09/23 and 26/09/26

An Introduction to Proofs about Concurrent Programs

Notes: [.pdf]

Lecture 11 on 16/09/30

More on invariants and textual reasoning -­‐ examples

Slides: [.pdf]

Lecture 12 on 16/10/03

LTL, Dekker’s algorithm, ...

Slides: [.pdf]

Concurrent Programming 2016 - Chalmers University of Technology & Gothenburg University