We will try to have the lecture notes available on-line before the lecture so you can bring them to the lecture to do notes and (in case of errors) corrections. However, we are in the process of changing the course to extend the contents based on the Erlang programming language, so it might not happen that you get them ready to read before the lecture. For impatient students, you could check the website of course instance from the last fall (do not read the contents related to the programming language JR).
1. Introduction to the course.
The goal of the course. Course Materials. The basic concepts of parallelism and concurrency.
Recommended reading from the book: Chapter 1 and Sections 2.4-2.9.
2. The shared update problem.
Peterson's algorithm. Introduction to semaphores and locks.
Recommended reading from the book: Section 3.1 - 3.3, 3.6, 3.7 and Sections 6.1 - 6.3. The book shows the Dekker's algorithm instead of Peterson's. The Dekker's algorithm is slightly more complex so please read the Peterson's algorithm from the slides.
3. Dining philosophers and producer-consumers.
- Recommended reading from the book: Section 6.7 and 6.9.
4. Monitors
- Recommended reading from the book: Section 7 to Section 7.4.
5. Monitors. (continue)
- Recommended reading from the book: Section 7.6.
6. Debugging
7. Introduction to Erlang
- Sequential Erlang.
8. Concurrency in Erlang
- Processes, sending and receiving messages
- Client-server architecture, distributed Erlang.
9. Generic server, programming patterns revisited.
Generic server implementation
Synchronization barrier
Resource allocation
Readers/writers
10. Parallelism, Workers, and Introduction to Software Transactional Memories
11. Software Transactional Memories, Linda Concurrency Model
12. Summary
Guest lecture: Cons T Åhs, Cisco Systems
15 February, On Network Configuration, Distributed and Concurrent Programming with Erlang
Guest lecture: Niklas Gustavsson, Spotify
29 February, Concurrent programming
Guest lecture: Johan Nordlander, Data Ductus AB
2 March, Reactive Objects