Lesson | Week # | Lecture | Topic | Teacher |
---|---|---|---|---|
1 | 35 | Aug 28 | Race conditions & Locking | Kasper |
2 | 36 | Sep 4 | Visibility & initialization | Kasper |
3 | 37 | Sep 11 | Monitors (old lecture 2) | Kasper |
4 | 38 | Sep 18 | Performance measurements | Jørgen |
5 | 39 | Sep 25 | Executor framework | Kasper |
6 | 40 | Oct 2 | Streams | Kasper |
7 | 41 | Oct 9 | Performance and scaleability | Kasper |
8 | 42 | Oct 16 | Fall break | |
9 | 43 | Oct 23 | React | Jørgen |
10 | 44 | Oct 30 | Kotlin Coroutines 1 | Kasper |
11 | 45 | Nov 6 | Kotlin Coroutines 2 | Kasper |
12 | 46 | Nov 13 | Testing | Kasper |
13 | 47 | Nov 20 | Lock free coordination | Jørgen |
14 | 48 | Nov 27 | Exam prep and course evaluation | Jørgen & Kasper |
15 | 49 | Dec 4 | Q&A | Jørgen & Kasper |
In this MSc course, you learn how to write correct and efficient concurrent and parallel software, primarily using Java, on standard shared-memory multicore hardware. The course covers basic mechanisms such as threads, locks and shared memory as well as more advanced mechanisms such as parallel streams for bulk data, and lock-free data structures with compare-and-swap. It covers concepts such as atomicity, safety, liveness and deadlock. It covers how to measure and understand the performance and scalability of parallel programs. It covers methods to find bugs in concurrent programs. Also, we will take a look at some of the concurrency mechanisms proposed for other programming languages than Java.
For exercises and more information, see the course LearnIT site (restricted access). For formal rules, see the official course description.
The course is taught by Kasper Østerbye and Jørgen Staunstrup and designed together with Thomas Dybdahl Ahle, Peter Sestoft, Riko Jacob and Claus Brabrand at the IT University of Copenhagen. Teaching assistants are to be done
.
Each week we will update this repository with the material used in this week.