I alluded to the existence of a parallel programming course in my previous post about the SDP. This three-day course, Parallel Programming in .NET 4.0 [DNParallel], was born a few weeks ago following intense work by Bnaya Eshet and yours truly.
The syllabus can be broken roughly into the following:
- Introduction to processes, threads, and the thread pool
- Explicit (task) parallelism—creating and managing tasks and continuations
- Implicit (data) parallelism—parallelizing loops and LINQ queries
- Synchronization mechanisms, including lock-free code, memory models, thread-local storage, and kernel synchronization mechanisms
- Task schedulers
- Concurrent (thread-safe, lock-free) collections
- Architecture styles and design patterns, including case studies for parallelizing algorithms and managing dependencies
- Optimization tips and tricks, cache coherence matters, profiling
The course is packed with demos, including a gorgeous parallelism visualizer written by Bnaya:
There are also labs in which students implement parallel algorithms and parallelize existing programs, as well as practice introductory profiling and debugging scenarios.
Finally, I’m happy to announce that if you were at my SDP session on Parallel Programming (SVR201), you are entitled to a 20% discount for the next course! You can register through SELA, or if there’s a problem—write me through the contact form.