The eight units are:
- Unit 1: Imperative Data Parallelism
- Performance with Parallel.For
- Correctness
- Data parallelism and control-flow
- Lightweight concurrent tasks
- Unit 2: Shared Memory
- Data Races and Locks
- Shared Memory Patterns
- Unit 3: Concurrent Components
- Thread-Safety Concepts (Atomicity, Linearizability)
- Modularity (Specification vs. Implementation)
- Unit 4: Functional Data Paralliesm
- Parallel Queries with PLINQ
- Parallel Functional Programming with F#
- Array Parallel Algorithms with Accelerator
- Unit 5: Scheduling and Synchronization
- From {tasks, DAGs} to {threads, processors}
- Work-stealing
- Unit 6: Interactive/Reactive Systems
- External vs. internal concurrency
- Event-based programming
- Unit 7: Message Passing
- Conventional MPI-style programming
- Unit 8: Advanced Topics
- Parallelization
- Transactions
- Revisions
Course DependenciesThis 16 week (8 unit) course is aimed at beginning graduate or senior undergraduate students. However, individual units can also be taught a la carte.