Spring 2011
CS 635 Foundations of Parallel Compuation
Sections 001 and 002

  Syllabus Page

  Lecture Timetable

  Lecture Slides

  Homework & Projects

Course Description:

This course is designed to provide an introduction to the field of parallel computation. Topics chosen for discussion will illustrate architectural, algorithmic, and language requirements for parallel computing and the lectures will emphasize the relationships between these requirments. Parallel algorithm design and analysis as well as parallel programming languages will be examined in the context of specific parallel systems and models.


CS 583 (Analysis of Algorithms)
CS 571 (Operating Systems) and/or CS 540 (Language Processors)
Programming ability in C/C++ and familiarity with Unix


Prof. Pearl Y. Wang
Computer Science Department
Office:  Nguyen Engineering - ENGR 5322
Tel:       703-993-1527
E-mail:    pwang at cs.gmu.edu
Office Hours:   Wed 6 pm - 7 pm;   other times available by appointment

Class Hours:

Sec 001: Wed 7:20 pm - 10 pm;   ENGR 4457
Sec 002: Wed 7:20 pm - 10 pm;   NET
This course is delivered to the Internet section online using Moodle learning management system with MIST/C, which has replaced the Network EducationWare (NEW) delivery system. Students in all sections will have accounts on Moodle and can download the slide files from the Moodle course page. However, beginning in Spring 2011, only students in online sections will be able to connect to class sessions and download recordings of the lectures. Login information will be sent to all enrolled students by email, before the first scheduled class.

Textbooks & Websites:


Ananth Grama, Anshul Gupta, George Karypis and Vipin Kumar, Introduction to Parallel Computing, Second Edition, Addison Wesley, 2003.


Peter S. Pacheco, Parallel Programming in MPI, Morgan Kaufman Publishers, Inc, 1997.
Barbara Chapman, Gabriele Jost and Ruud van der Pas, Using OpenMP, MIT Press, 2007.
David Kirk and Wen-mei Hwu , Programming Massively Parallel Processors, Morgan Kaufman, 2010


MPICH: http://www-unix.mcs.anl.gov/mpi/mpich/
LAM:     http://www.lam-mpi.org/
OpenMPI:     http://www.open-mpi.org/
MPI:             http://www-unix.mcs.anl.gov/mpi/
Beowulf:       http://www.beowulf.org/

OpenMP:      http://openmp.org/
NVIDIA Developer Website:  http://developer.nvidia.com/page/home.html

Journeyman's Programming Tour A great reference to other refs

Course Requirements & Grading:

The course grade will be based on homework, programming assignments and examinations. There will be at least three major programming assignments, a midterm and a comprehensive final examination. All assignments must be completed by the stated due date and time. Late coursework will not be accepted and make-up tests will not be given for missed examinations.

Students in the NET section are expected to take the examinations in-class (i.e. on the GMU campus) on the specified dates.

Homework & Projects:   50%
Midterm Exam:    25 %
Final Exam:         25%
All coursework is to be done independently unless otherwise specified. Students are expected to abide by the GMU and Computer Science Department Academic Integrity Policies at http:/honorcode.gmu.edu/ and http://cs.gmu.edu/wiki/pmwiki.php/HonorCode/HomePage. Violations of these policies will be pursued.
If you have a documented learning disability or other condition that may affect academic performance you should: 1) make sure this documentation is on file with the Office of Disability Services (SUB I, Rm. 4205; 993-2474; http://ods.gmu.edu/) to determine the accommodations you need; and 2) talk with me to discuss your accommodation needs.

Important Dates:

Last day to add:  Tues Feb 8, 2011
Last day to drop: Tues Feb 8, 2011 (no tuition penalty)
Last day to drop: Fri Feb 25, 2011

Spring Break: Mon Mar 14 - Sun Mar 20, 2011
Last day of classes: Sat May 7, 2011

Final Examination: Wed May 11, 2011, 7:30 pm - 10:15 pm

Tentative List of Topics:

Parallel architectures and models of computation
PRAMs, pipelining, data parallel computing
Parallel language constructs
Designing parallel algorithms
Distributed memory message passing
Shared memory programming--pThreads and/or GPU computing

Created: 24 Jan 2011
P.Y. Wang