Wim Bohm
Office: 470 CS Building
Office Hours: MW 10:00-11:00
Louis Rabiet
Office: CSB 120
Office Hours: Tue 09:00 - 11:00 am
Lecture Time and Place:
9:00-9:50, MWF, CSB Room 130

Parallel programming is becoming increasingly critical for a computer scientist/engineer. All new machines are now 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. However, parallel programming is not easy. For current CPUs it requires awareness of the multicore architecture, the cache hierarchy, and in some cases the vector floating point capabilitites .
This course will teach you the basic concepts of designing, writing, debugging, and analyzing 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.

Parallel programming is becoming increasingly critical for a computer scientist/engineer. However, parallel programming is not easy. Patterson at LCPC 2006 eloquently claimed that we were, even then, at the end of the "La-Z-Boy Programming" By this he meant "programming unaware of the multicore architecture, the cache and memory hierarchy, or the vector floating point capabilitites of the new machines."
This course covers the two main parallel programming paradigms: shared memory, and message passing. We will also examine a number of parallel algorithms for a range of problems. In this hands-on class you will:

Because this class is a capstone course for the undergraduate Computer Science curriculum, there is a writing component at the end of the course.


Recitations introduce assignments. They are held in CSB 225, Monday 12:00 - 1:40, Wednesday 17:00 - 18:40. Presence at recitations ia not required. Because there are 60 students in this class, we split each recitation in two (50 minute) sub sessions, each with its own group of students.


Often you have done some experiment in the a lab, that you then discuss on RamCT. We will create discussion groups in the first week and announce them on RamCT. Every student is required to have an initial input in each discussion, e.g. the results of a Lab exercise. After on-line discussion a (rolling) representative of the discussion group publishes trhe group result.

Programming Assignments

PAs are done individually, initially on the department Unix boxes (the "veggie" machines (2 CPUs each with 4 cores)), on the ISTeC Cray, and then on HPC group research machines with CUDA enabled GPUs.


CS 370 System Architecture and Software or instructor consent


Parallel Programming in C with MPI and OpenMP, Michael J. Quinn (Mc Graw Hill, 2003 ISBN 0-07-282256-2). This textbook is out of print in North America. If you are able to get it from any other source (eBay, Amazon, international, etc.) that is fine, but we have worked out an arrangement with the publisher to make the required chapters available to students. This will cost about $30, and can be purchased at the CSU bookstore. The ISBN of this version is 9780390180803 (prefix 13:)


Here are the formally graded elements of the course and associated weighting:

Activity Weight
Programming Assignments 30 %
Tests (Midterm & Final) 40 %
Labs/Discussions/Quizzes 20 %
Final Project: term paper 10 %

Semester grades are determined by the weighted sum of points earned in each of these areas. Tests will be done individually and grades assigned on an individual basis. The assignment of letter grades will be made as follows:

Letter Grade Score
A >=90%
A- >=88%
B+ >=86%
B >=80%
B- >=78%
C+ >=76%
C >=70%
D >=60%
F <60%

Late and Makeup Policy

Midterm and Final: Make-up exams are only given for extraordinary circumstances (e.g., illness, family emergency). Students must consult with the instructor as soon as possible, before the start of the exam. Course examination dates are listed in the syllabus; be aware of them and plan accordingly.

Programming Assignments: Unless otherwise specified, programming assignments are to be submitted electronically through RamCT. Specifics will be included in each assignment. Always check the assignment page for due dates. Late assignments submitted within 48 hours of the time required will receive a 10% late penalty. Electronic submission is closed 48 hours after assignments are due; students not having submitted programs receive an automatic zero on the assignment.


The project entails finding (papers or a web site on) some interesting topic in Parallel Computing (e.g. a Parallel Programming Language, or System, or Algorithm) and writing a one to two page paper on it. The goal is to teach yourself (and me) something exciting in Parallel Computing, and to concisely communicate that.

In Class Participation

All students taking this course are expected to participate actively. For all students, includes asking and responding to questions. For distance students, the mechanism for asking and responding to questions is the bulletin board on the RamCT site. The TA will note how many questions you ask! For on-campus students, questions may be asked or answered in class, during office hours, or on the same bulletin board the distance students use.

Another form of participating occurs in the Discussions.

Professional Conduct

All students are expected to conduct themselves professionally. We (the instructors and GTAs) assume you are familiar with the policies in the student information sheet for the department. Additionally, you are computing professionals, albeit perhaps just starting. You should be familiar with the code of conduct for the primary professional society, ACM. You can read the ACM Code of Conduct HERE. We also assume that you are familiar with the university's integrity policy and follow the university's honor pledge (I will not give, receive or use any unauthorized assistance on academic work).

We work to maintain an environment supportive of learning in the classroom and laboratory. Towards that end, we require that you be courteous to and respectful of your fellow participants (i.e., classmates, instructors, GTAs and any tutors). In particular:

  • Please turn off the ring on your cell phone. If you are expecting an emergency call, sit near the door and slide out discretely to take it.
  • In class use of electronic devices in general, and laptops specifically, is permitted as a courtesy so that you may better participate and learn. If at any time the instructor judges that an electronic device is becoming a distraction the student may be asked to to turn it off and put it away.
  • All exams and quizzes are to be done without the aid of notes of any kind. Laptops and all other electronic devices must be shut and put away during exams and quizzes.