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.
Lecture: Monday, Wednesday 10:05am - 11:20am, D106 LSRC
Office Hours: Monday 2pm-3pm, Tuesday 3pm-4pm
Alvin R. Lebeck
Email: alvy AT cs.duke.edu
Office: D308 Levine Science Research Center
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