Processors with over hundred cores have already become a reality. However, technologies to create software that can take advantage of this massive parallelism remains to be a grand challenge in computer science. This special topics course will discuss recent advances and new directions that are being pursued to address this challenge. We will discuss solutions that cut across the computing stack from languages to processor design, including topics such as active testing, deterministic parallel computing, GPGPU, MapReduce, OS support for multi-core, functional programming for concurrency (Scala), memory models, etc.

The course includes programming assignments and a final project. The programming assignments consists of experimenting with a work-stealing scheduler, implementing a simple data-race detector for concurrency testing, and developing a simple GPU program. You will get access to latest parallel programming tools and systems for your projects such as CAC cluster, Amazon's EC2, Thread Checker, pinPlay record and replay tool, and CHESS for active testing.


Welcome to EECS 598