Parallel programming is increasingly critical for computer scientists and engineers. All modern machines are parallel. There is already a movement suggesting that all students be taught 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, and message passing. We will also examine a number of parallel algorithms for a range of problems.
This semester, CS475 is also combined with GRAD 510: Introduction to High Performance Computing, a 3-credit course. All students will do the same work and take the same exams, and be graded as a single group.