CS 348: Course schedule

This schedule is very rough. It's what I did last time I taught the course (at least for the first half), but I'm intending to shake things up in some notable ways. Think about the exam dates fixed; think about everything else as fairly fluid, but I'll get them nailed down as the term goes on. I'm providing them here so you can set a sense of what the class will look like, but I'll be shuffling a lot of it around.

# Day Topics Assignment due
1 M Sep 10 Course overview  
2 W Sep 12 Intro to Java multithreading Intro assignment
3 F Sep 14 Fork-join parallelism Java multithreading
4 M Sep 17 More fork-join; Analyzing parallelism  
5 W Sep 19 Analyzing parallelism ForkJoin
6 F Sep 21 Parallel prefix Speedup analysis
7 M Sep 24 Parallel pack; quicksort; mergesort  
8 W Sep 26 Locking, synchronization Census version 1
9 F Sep 28 Deadlocks, race conditions Census version 2
10 M Oct 1 Exam 1  
11 W Oct 3 Deadlocks, race conditions Census: version 3
12 F Oct 5 Read/write locks, condition variables Census: version 4
13 M Oct 8 Read/write locks, condition variables Census: version 5 and writeup
14 W Oct 10 Locking algorithms STM 1
15 F Oct 12 Locking algorithms STM 2
  M Oct 15 BREAK  
16 W Oct 17 Parallel linked lists STM 3
17 F Oct 19 Parallel linked lists STM 4
18 M Oct 22 Streams, Reactive programming STM 5
19 W Oct 24 Exam 2  
20 F Oct 26 Distributed systems: MPI lab  
21 M Oct 29 Distributed replication strategies  
22 W Oct 31 2 phase commit; remote communications MPI exercises 1 and 2
23 F Nov 2 Remote communications MPI k-means
24 M Nov 5    
25 W Nov 7  
26 F Nov 9 Cluster computing, MapReduce  
27 M Nov 12    
28 W Nov 14 Additional topics  
EW   Exam 3