Practical Concurrent and Parallel Programming (PCPP) (PRCPP)

Lecture plan

Course weekISO weekDateWhoSubjectMaterialsExercises
1 35 29 Aug PS Concurrent and parallel programming, why, what is so hard. Threads and locks in Java, shared mutable memory, mutual exclusion, Java inner classes. Goetz chapters 1, 2; Sutter paper; McKenney chapter 2; Bloch item 66; Slides week 1; Exercises week 1; Example code: pcpp-week01.zip Exercises week 1
2 36 5 Sep PS Threads and Locks: Threads for performance, sharing objects, visibility, volatile fields, atomic operations, avoiding sharing (thread confinement, stack confinement), immutability, final, safe publication Goetz chapters 2, 3; Bloch item 15; Slides week 2; Mandatory exercises week 2; Example code: pcpp-week02.zip Mandatory handin 1
3 37 12 Sep PS Threads and Locks: Designing thread-safe classes. Monitor pattern. Concurrent collections. Documenting thread-safety. Goetz chapters 4, 5; Slides week 3; Exercises week 3; Example code: pcpp-week03.zip Exercises week 3
4 38 19 Sep PS Performance measurements. Sestoft: Microbenchmarks; Slides week 4; Exercises week 4; Example code: pcpp-week04.zip; Optional: McKenney chapter 3 Mandatory handin 2
5 39 26 Sep PS Threads and Locks: Tasks and the Java executor framework. Concurrent pipelines, wait() and notifyAll(). Goetz chapters 6, 8; Bloch items 68, 69; Slides week 5; Exercises week 5; Example code: pcpp-week05.zip Exercises week 5
6 40 3 Oct PS Threads and Locks: Safety and liveness, absence of deadlock and livelock. The ThreadSafe tool. Goetz chapter 10, 13.1, appendix A; Bloch item 67; Slides week 6; Exercises week 6; Example code: pcpp-week06.zip Mandatory handin 3
7 41 10 Oct PS Threads and Locks: Performance and scalability Goetz chapter 11, 13.5; Slides week 7; Exercises week 7; Example code: pcpp-week07.zip Exercises week 7
42 17 Oct Fall break
8 43 24 Oct PS Threads and Locks: GUI applications Goetz chapter 9; Slides week 8; Exercises week 8; Example code: pcpp-week08.zip Mandatory handin 4
9 44 31 Oct PS Threads and Locks: Testing concurrent programs. Goetz chapter 12; Herlihy and Shavit chapter 3; Slides week 9; Exercises week 9; Example code: pcpp-week09.zip Exercises week 9
10 45 7 Nov PS Transactional memory, Multiverse library Harris et al 2008 paper; Herlihy and Shavit sections 18.1-18.2; Cascaval et al 2008 paper; Slides week 10; Exercises week 10; Example code: pcpp-week10.zip Mandatory handin 5
11 46 14 Nov PS Optimistic concurrency, lock-free data structures, Treiber stack, compare-and-swap Herlihy and Shavit chapter 11; Goetz chapter 15; Slides week 11; Exercises week 11; Example code: pcpp-week11.zip Exercises week 11
12 47 21 Nov PS The Michael and Scott queue, progress concepts, Java memory model Goetz chapter 15 and 16; Michael and Scott paper; Optional: Java Language Specification section 17.4; Slides week 12; Exercises week 12; Example code: pcpp-week12.zip Exercises week 12
13 48 28 Nov CB Introduction to message passing concurrency (no mutable shared memory), Introduction to Erlang, Introduction to Java+Akka. Erlang chapter 1, 2, 5; Slides week 13; Exercises week 13; Example code: pcpp-week13.zip Mandatory handin 6
14 49 5 Dec CB Message passing (no mutable shared memory), Erlang, Java+Akka. Slides week 14; Example code: pcpp-week14.zip; or see materials at Claus's page No new exercises

Mandatory course materials

Optional course materials

Even more optional materials

Java resources


Peter Sestoft, Last update 2015-03-25