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.

You can see last year's web page to get an idea of the material (do not read the contents related to the programming language JR)."

All the Erlang's material for the lectures is here

## Lecture slides

### Lecture 3 (5th of September)

Semaphores

• Chapter 6 of the book.

### Lecture 4 (8th of September)

More Semaphores, on to Monitors

### Lecture 5 (11th of September)

More Semaphores, on to Monitors cont

• On Monday 8 September, we did a detailed recap of the first week.

So the uploaded slides ("lecture 4") were in fact mostly used on Thursday 11 Sep. We also introduced (loop) invariants that day.

The tutorial on Friday 12 Sep dealt with the numbers of interleavings (Exercise 2.1 from the book) and with invariants. Here is a useful link for invariants: http://www.cs.uofs.edu/~mccloske/courses/cmps144/invariants_lec.html.

The lecture on 15 Sep 2014 will introduce monitors and, if time permits, protected objects.

### Lecture 6 (15th of September)

Monitors and Protected objects

### Lecture 7 (18th of September)

Shared Memory review

• On Thursday 18 Sep we did a detailed proof of correctness for the readers-writers problem using protected objects, complementing the book's proof for monitors. We also did a proof for the dining philosophers problem.

The tutorial on Fri 19 Sep covered exercises 6.1-6.4, 6.6, and 6.7 in the book.

### Lecture 8 (22nd of September)

Message Passing

• We also discussed the different notions of "variable" in mathematics and in imperative programming, and why this leads to difficulty in reasoning about imperative programs.

### Guest Lecture by Cons T Åhs (25th of September)

Distributed Programming with Erlang - A crash course

### Erlang Tutorial by Raúl Pardo (29th of September)

Resources used during the tutorial

### Lecture 9 (1st of October)

Message Passing (concluded) and Linda

• We need to spend more time with Linda, and even with message passing. And as always, some of these slides were not used during the lecture.

### Lecture 10 (6th of October)

Critical Sections revisited, and Reasoning about Programs

### Lecture 11 (13th of October)

Critical Sections revisited, and Reasoning about Programs

• Same slides than in lecture 10