CIS 431/531 Intro to Parallel Computing

Course Description

This course covers introductory topics in parallel computing and provides hands-on experience in programming high-performance computing systems, from single-processor multicore platforms up to large-scale distributed memory multi-CPU/GPU systems. Topics include current and emerging hardware systems, parallel algorithms, programming models, and performance engineering for parallelism and locality. By the end of this course, you will be able to write blazingly fast and scalable code for modern machines.

Prerequisites: CIS 330, or experience with C/C++ and algorithms.

Instructor: Jee Whan Choi
Office: 328 Deschutes
Lecture: MWF 12:00 - 12:50
Office Hours: MWF 13:00 - 14:00, or by appointment
Contact: jeec [at]


This course does not have a text book, but the books listed below may be helpful.

  1. Structured Parallel Programming: Patterns for Efficient Computation, by McCool, Reinders, and Robinson
  2. Introduction to Parallel Computing, by Grama, Karypis, Kumar, and Gupta
  3. Introduction to High Performance Computing for Scientists and Engineers, by Hager and Wellein

Accessible Education

The University of Oregon is working to create inclusive learning environments. Please notify me if there are aspects of the instruction or design of this course that result in disability-related barriers to your participation. You are also encouraged to contact the Accessible Education Center in Oregon Hall, Suite 360 at 541-346-1155 or

Grading Policy

All assignments will be graded on functionality and aesthetics. Each problem on an assignment will be graded as a whole. Code that does not compile on Talapas using the provided software will be assigned 0 points, no exceptions. Functioning code will be examined for proper use of comments, readability (appropriate whitespace and indenting), and understandability (use of intuitive variable names and language constructs). In short, code with proper functionality is expected, but understandable code is equally important.

Letter grades will be assigned using the following grading scheme:

Score Letter Grade
97 - 100 A+
93 - 96 A
90 - 92 A-
87 - 89 B+
83 - 86 B
80 - 82 B-
77 - 79 C+
73 - 76 C
70 - 72 C-
67 - 69 D+
63 - 66 D:
60 - 62 D-
< 60 F

The total score will be computed as follows:

Criteria Undergraduate Graduate
Quiz 10% 5%
Homeworks 40% 35%
Group Project 40% 40%
Survey Paper 0% 10%
Presentation 10% 10%

Late Assignment Policy

Late assignments will not be graded, except in cases of documented emergencies.


Discussion of course material and collaboration with other students is encouraged but each student/project group must write/type and submit his/her/their own solution. Your code and proofs (if applicable) should never contain sections which are identical to the submission of another student, past or present. Submitted work must be entirely that of the student(s) whose name(s) appear(s) on the submission and not solicited in any way from others. Violation of these policies can result in automatic failure of the course.

Any use of code from a source other than the course textbook or the examples from lectures/labs needs to be explicitly cited in the comments of your submitted code. Submissions will be analyzed using Moss when applicable.

See the University of Oregon’s policy on academic misconduct for more information.

COVID-19 Logistics

COVID containment plans for classes