This course provides advanced topics in parallel computing. Topics include: Moore?s law, Flynn?s taxonomy, instruction-level parallelism, architectural support for shared memory, cache coherence, distributed memory, multi-processor, multi-core programming, thread programming, thread safety, synchronization, message passing, MPI-based parallel systems, and overview of modern parallel systems such as GPU, CUDA.