FAQ

I will add frequently asked questions here

Useful Resources

Weekly Session Recaps

Here you will find my slides, notes, and any additional resources we've looked at during our exercise session.

Week 1 - 21/02/2024

Didn't do much ;)

Slides 1

Week 2 - 28/02/2024

First I gave a short motivation on why parallel programming is **really** important. Then we had a long theory recap on Threads: What are threads? How to create threads? What states can threads be in and what is the bigger picture? Next we briefely looked at (bad) interleavings and prepared ourselves for assignment 2. In the end we played a quick quiz as well.

Slides 2

Week 3 - 06/03/2024

First we discussed common mistakes in assignment 2. Next week we looked at: `synchronized` and wait/notify in Java. Of course we also play a quick quiz and had a pre-discussion for assignment 3 (we briefely discussed AtomicInteger).

Slides 3

Week 4 - 13/03/2024

This week we looked at: wait/notify, pipelining, and work partitioning & scheduling

Slides 4

Week 5 - 20/03/2024

This week we looked at: Divide and Conquer, ExecutorService, and ForkJoin

Slides 5

Week 6 - 27/03/2024

This week we looked at: Amdahl's Law and Gustafson's Law, Task Graphs, Divide and Conquer with ForkJoin, and Locks

Slides 6

Week 7 - 10/04/2024

This week we looked at: Threads, External Locks, Synchronization and Monitors, Pipelines, Divide and Conquer, and ExecutorService

Slides 7

Week 8 - 17/04/2024

This week we looked at: Memory Reordering, Java Memory Model, State Space Diagrams, Decker's Algorithm, and Peterson Lock

Slides 8

Week 9 - 24/04/2024

This week we looked at: Java Memory Model, Filter Lock, Bakery Lock, Atomic Registers and Atomic (RMW) Operations, Caches and why TAS Spinlock scales horribly. Semaphores are on the slides but were only covered the week after.

Slides 9

Week 10 - 03/05/2024

This week we looked at: Semaphores, Rendez-vous, Barriers, Conditions and Monitors, and the Sleeping Barber Problem (Producer-Consumer Problem).

Slides 10

Week 11 - 08/05/2024

This week we looked at: Thread-safe linked list using various synchronization techniques such as: Coarse-grained locking, Hand-over-hand locking, Optimistic Synchronization, and Lazy Synchronization. At the very end we quickly looked at a lock-free tack datastructure.

Slides 11