Colorado
State University Computer Science Department


CS 475: Parallel Programming
GRAD 510: High Performance Computing
Fall 2011

Class meets: Tu-Th 9:30-10:45 AM in Behavioral Sciences 107
Lab meets: Wed 3:00 - 4:40

Announcements:

Watch this space, the Schedule Page and Lab Schedule Page for last minute information.

Course Overview

Parallel programming is becoming increasingly critical for a computer scientist/engineer. All new machines are increasingly parallel. There is already a movement that suggests that all students be taught parallel programming in the introductory courses, with sequential programming viewed as a special case (see Bleloch's keynote speech at PPoPP 2009). Although we don't do that at CSU, parallel programming is very important.

However, parallel programming is not easy. Patterson's keynote talk at LCPC 2006 (here are his slides) eloquently makes that argument that we were, even then, at the end of the "La-Z-Boy Programming" era, so this is a huge challenge.

This course will train you to respond to the challenge. It will teach you the basic concepts of writing, debugging, analyzing, benchmarking, and designing 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. The class is intended to be very hands-on: you will

  1. write a number of programs (in C);
  2. run them on the CS department's Unix platforms and on a large scale supercomputer at NERSC;
  3. measure the running time as a function of two parameters (problem size and number of processors);
  4. analyze your observations; and
  5. write reports on your observations and analyses.
Because this class is a capstone course for the undergraduate Computer Science curriculum, there is a significant writing component. This will be in the form of detailed lab reports, and a term paper, for which you will receive critical feedback on your writing and expository skills.

Prerequisites: CS 370 System Architecture and Software or instructor consent. Another key prerequisite is intellectual curiosity.

Tentative Syllabus & Schedule

The tentative schedule of lecture topics, titles and due dates of the Homework and Lab assignments and the associated reading material is also posted there. Note that it is tentative and will be modified as the course proceeds.

Details