Parallel programming is increasingly critical for computer scientists and engineers. All modern machines are parallel, and there is a movement to teach parallel programming in the introductory courses, with sequential programming being viewed as a special case. However, parallel programming is not easy.
This course will teach you the basic concepts of designing, writing, debugging, and analyzing parallel programs. It covers the two main paradigms: shared memory (on CPUs and on GPUs), and message passing. We will also examine a number of parallel algorithms for a range of problems.
This semester, CS475 is taught completely online.