This course is an introduction to parallel programming paradigms. Topics covered include: types of parallelism (task, pipelined/producer-consumer, etc.), programming models (shared memory, message passing, data parallel, etc.), programming environments (OpenMP, Cilk, TBB, MPI, CUDA, etc.), parallel hardware, parallel memory systems (coherence and consistency), application scaling, and topics from recent publications on parallel computing.


Compsci/ECE 250 or equivalent, ability to program in a high level language, or consent of instructor. Please see the instructor if you have any questions about your background. Most of the programming in this course requires familiarity with Unix and the make utility for compiling programs. If you are not familiar with Unix or the make utility you should spend some time becoming familiar.

Meeting Time & Location

Lecture: Monday, Wednesday 10:05am - 11:20am, D106 LSRC
Office Hours: Monday 2pm-3pm, Tuesday 3pm-4pm


Alvin R. Lebeck
Email: alvy AT
Office: D308 Levine Science Research Center

Discussion Forum

We will probably use Piazza for class discussion. The system is highly catered to getting you help fast and efficiently from classmates, the TA, and myself. Rather than emailing questions to the teaching staff, you should post your questions on Piazza. Find our class page at this link