Class Schedule
- Week 1: Introduction
- Related reading: How to read a technical paper by Jason Eisner
- Related reading: How to read a paper by Michael Mitzenmacher
- Related reading: Efficient Reading of Papers in Science and Technology by Michael J. Hanson (and updated by Dylan J. McNamee)
- Related viewing: David Patterson on Bad and Good Research
- Reading assignment: Shared Memory Consistency Models: A Tutorial
- Week 2: Posix Threads
- Reading assignment: Threads Cannot be Implemented as a Library
- Week 3: Cilk
- Reading assignment: The implementation of the Cilk-5 multithreaded language
- Week 4: OpenMP
- Week 5: Intel Thread Building Blocks
- Reading assignment: Goldilocks: Efficiently Computing the Happens-Before Relation Using Locksets
- Related Reading: Intel Threading Building Blocks Tutorial
- Week 6: Java Threads
- Reading assignment: A Java Fork/Join Framework
- Week 7: Java Concurrency Patterns
- Week 8 (Guest): The Java Memory Model
- Reading assignment: The Java Distributed Memory Model
- Related reading: The Java Memory Model
- Week 9: Programming in Scala
- Reading assignment: Scalable Component Abstractions
- Week 10: Parallel programming in Scala
- Reading assignment: MapReduce: Simplified Data Processing on Large Clusters
- Related reading: Scala Actors: Unifying thread-based and event-based programming
- Further reading (book): Programming in Scala: A Comprehensive Step-by-step Guide, by Odersky, Spoon, and Venners.
- Week 11: GPUs and OpenCL, part 1
- Reading assignment: Eraser: a dynamic data race detector for multithreaded programs
- Week 12: GPUs and OpenCL, part 2
- Reading assignment: A bridging model for parallel computation
- Week 13: Student Presentations
- Reading assignment list: TBD