Parallel programming is increasingly critical for computer scientists and engineers. All modern machines are parallel. There is already a movement suggesting that all students be taught parallel programming in the introductory courses, with sequential programming being viewed as a special case. However, parallel programming is not easy.
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.
This semester, CS475 is also combined with GRAD 510: Introduction to High Performance Computing, a 3-credit course. All students will do the same work and take the same exams, and be graded as a single group.
Patterson at LCPC 2006 eloquently claimed that we were, even then, at the end of the "La-Z-Boy Programming:" era meaning, that "it was untenable for programmers to remain ignorant of the multicore architecture, the cache and memory hierarchy, and the vector floating point capabilities of the new machines." This is even more true today, and the skills you learn here will also improve performance of your sequential programs.This course covers the two main parallel programming paradigms: shared memory (on both CPUs, and GPU-based accelerators), and message passing on dirstibuted memory machines. We will also examine a number of parallel algorithms for a range of problems. In this hands-on class you will:
CS 370 (System Architecture and Software), or CS 320 (Algorithms) or instructor consent or
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 | 10 % |
| Quizzes/Participation | 5 % |
| Final Project: term paper | 15 % |
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 (we reserve the right to lower any of the cutoff
points):
| Grade | Score |
|---|---|
| A | ≥ 90% |
| A- | ≥ 88% |
| B+ | ≥ 86% |
| B | ≥ 80% |
| B- | ≥ 78% |
| C+ | ≥ 76% |
| C | ≥ 70% |
| D | ≥ 60% |
| F | < 60% |
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 scheduled start of the exam. Course examination dates are listed in the syllabus; be aware of them and plan accordingly.
Programming Assignments: Programming assignments will be submitted using the Checkin tab on this website. Specifics will be included in each assignment. Always check the assignment page for due dates. Late assignments will not be accepted; students not having submitted programs/reports receive an automatic zero on the assignment.
| In class and online midterm | Week of Oct 14 (Wk 7) in the evening |
| Final Exam | Mon, December 16, 6:20-8:20 PM, in class Dec 20 - Dec 22 On line |
Midterms and the final exam will be held in the same classroom as regular lectures. This class has an evening midterm in Week 7. On line exams will be taken as a quiz in Canvas and will be proctored via ProctorU.
While no change to the midterm dates is anticipated, the instructor reserves the right to change these dates with a one week notice.
All students taking this course are expected to participate actively. For all students, this includes asking and responding to questions, typically using I-clickers. There will also be canvas quizzes.
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 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: