Computer Science 296
Parallel Programming
This course is an introduction to parallel programming. Topics covered include: programming models (shared memory, message passing, data parallel, etc.), programming environments (pthreads/OpenMP, MPI, CUDA, etc.), parallel hardware, parallel memory systems (coherence and consistency), application scaling, and topics from recent conferences on parallel programming.
Compsci 104, 108, (or equivalent), 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 the unix make utility for compiling programs. If you are not familiar with the make utility you should spend some time becoming familiar.
North 306 Wednesday & Friday 2:50 to 4:05
Course Web Page: http://www.cs.duke.edu/courses/fall09/cps296.3
Professor Alvin R.
Lebeck
Office: D308 LSRC
Office Hours: Wednesday 10:30 – 11:30 and by appointment (email me)
Email: alvy (you figure out the rest)
This course is a seminar course and not a traditional lecture course. Student involvement is an integral part of the course, thus reading and presenting material in both written and oral form is expected from the students. There is very little busy work. We will read several papers, if you have difficulty reading, writing, or speaking you will be expected to work hard to improve these skills.
Grades are based on:
Deadlines will be enforced except in very exceptional circumstances. It is better to submit something nearly finished than wait and submit late.
Academic Misconduct: I have a zero tolerance policy for academic misconduct, this includes cheating on homework/exams and
plagiarism on the project. If you have
not worked on projects of the type expected in this course, then you need to
particularly careful about citing previous work and crediting others’ research.
You will have at least three programming assignments. Each programming assignment will be to implement a parallel program using a particular programming environment. The three environments are pthreads, MPI and CUDA. Further information regarding assignments and will be provided. These programs are to be written by you, not downloaded from the internet or otherwise copied.
Each student will complete a semester project that is the parallel implementation of an algorithm of the student’s choosing. Further details of the project expectations will be provided.