CS 6204: Ubiquitous Parallelism Spring 2015 Dongyoon Lee With the advent of parallel systems, it is now the role of programmers to explicitly expose parallelism in software and take advantage of parallel computing resources. However, parallel programming is inherently complex as programmers have to reason about all possible interleavings. The course will include recent advances and new directions that are being pursued to address the challenges in developing easy-to-write, efficient and reliable parallel programs. We will discuss solutions that cut across the computing stack from languages to compilers to operating systems to processor design, including topics such as active testing, deterministic parallel computing, GPGPU, MapReduce, OS support for multi-core, memory consistency models, etc.