CS 475 / 575 -- Parallel Programming

Ecampus Edition

Spring Quarter 2017


Lectures Projects Handouts Grades VHR

This page was last updated: June 6, 2017

Things to Know About:

Important Dates

April 3Spring Quarter classes start
May 5Test #1 opens at 1:00 PDT
May 5Cinco de Mayo (just a coincidence...)
May 14Mothers Day
May 29Memorial Day
June 15Test #2 opens at 2:00 PDT
June 16EECS Graduation Celebration, 3:30
June 17OSU Graduation

Class Videos in MP4 Format

Go here to play or download the class video lecture files.

Here are Some Background Resources for You

Over the last couple of months, various faculty have been putting together mini-tutorials on topics that we (apparently) expect you to magically know, without us ever actually showing you. Here they are. We hope they help.

What We Will Be Doing This Quarter

The goals of this course are to leave you "career-ready" (i.e., both work-ready and research-ready) for tasks that require desktop parallelism, both on a CPU and on a GPU.

CS 475/575 topics include:


This course will use C/C++ for its programming. Already being comfortable with function calls, arrays, for loops, structures, arrays of structures, structures of arrays, pointers, trees, and linked lists is important. It is strongly suggested that you not use this class as an opportunity to learn C for the first time.

Many of the assignments can be done on Linux systems. It would be good if you already know how to use Linux and know at least one Linux-based editor (vim is good.

Some knowledge about computer architecture (e.g., cores, cache) would be a plus, but not critical.

Learning Outcomes

On completion of the course, students will have demonstrated the ability to:

  1. Explain the clockspeed limitations of computing using physics and Moore's Law
  2. Explain the limitations of parallel computing using Amdahl's Law
  3. Demonstrate "parallel thinking" in program design
  4. Explain the difference between TLP, DLP, and SIMD
  5. Demonstrate the ability to program parallel algorithms in TLP, DLP, and SIMD.
  6. Characterize what types of problems are best able to be parallelized
  7. Characterize different parallel programming patterns and what types of problems they best address
  8. Chacacterize how cache issues affect parallel performance
  9. Demonstrate the proper use of synchronization to avoid race conditions and deadlock
  10. Characterize the benefits of using a CPU versus using a GPU for parallel programming
  11. Characterize the benefits of using a GPU versus using a CPU for parallel programming

In addition, those taking this course as CS 575 will also have deminstrated the ability to:

  1. Read a parallel-programming-related research paper and write a 5-page analysis paper of it. (I will make some of these available for you, or you can propose your own. It has to be a real research paper, though.)


The class is being taught by Professor Mike Bailey.

Office: Kelley 2117
Phone: 541-737-2542
E-mail: mjb@cs.oregonstate.edu
WebEx Room for Office Hours: https://oregonstate.webex.com/meet/mjboregonstate.edu

Prof. Bailey Office Hours:

I will hold live Office Hours via my WebEx room. It's site is: https://oregonstate.webex.com/meet/mjboregonstate.edu , but it's only open when I am there.

My Office Hours times are:
Sundays 5:30 - 7:00 PM PDT
Wednesdays 5:30 - 7:00 PM PDT
Fridays 5:30 - 7:00 PM PDT


The TAs for this course are:

Matthew Meyn, meynm@oregonstate.edu,

Sundays7:00 - 9:00 PM PDT
Mondays6:00-10:00 PM PDT
Wednesdays10:00 AM - 12:00 noon PDT
Thursdays6:00 - 10:00 PM PDT
WebEx: https://oregonstate.webex.com/meet/meynmoregonstate.edu


Yifan Shen, shenyif@oregonstate.edu.

Mondays2:00 - 4:00 PM PDT
Tuesdays2:00 - 4:00 PM PDT
Wednesdays2:00 - 5:30 PM PDT
Thursdays2:00 - 4:00 PM PDT
Fridays2:00 - 5:30 PM PDT
WebEx: https://oregonstate.webex.com/meet/shenyiforegonstate.edu


Click here to get to the handouts.

The Virtual Hand Raise (VHR)

I recognize that it sometimes takes a certain amount of courage to ask a question in class. But, the worst thing of all is to not ask! So, this class also uses something called the Virtual Hand Raise. Click here to get into it. It will allow you to send me a question or comment, completely anonymously. I will answer questions submitted this way by email to the class or in class.


There is no required textbook for this course. We will use notes that will be made available on the class web site.

There is a free Parallel Programming book available. Click here to get to it. I'm not sure how much it helps for this class, but it is certainly interesting to look through.


Project # Points Title Due Date
0 30 Simple OpenMP Experiment April 10
1 100 OpenMP: Numeric integration April 20
2 100 OpenMP: Static vs Dynamic and Small vs. Large Chunksize May 1 (=April 31)
3 70 False sharing. May 9
4 100 Functional Decomposition May 16
5 60 Vectorized Array Multiplication May 23
6 120 OpenCL Array Multiplication and Reduction June 2
7A 120 OpenCL/OpenGL Particle System June 13 -- No BDs
7B 120 Autocorrelation using OpenMP, SIMD, and OpenCL June 13 -- No BDs
575-only paper 100 Paper analysis June 13 -- No BDs

Project Notes

Refer back to the Project Notes handout.


Grades will be posted through this web page. To protect your privacy, they will be posted by your alias that you give me in Project #1.

Click here to see the current grade posting.

CS 475/575 will be graded on a fill-the-bucket basis. There will be 8 projects, 10 quizzes, and two tests. You get to keep all the points you earn.

In addition, the CS 575 people have an extra 100-point project.
The CS 475 people automatically get 100 points for this project, even though they didn't have to do it.

Your final grade will be based on your overall class point total. Based on an available point total of 1100, grade cutoffs will be no higher than:

Points Grade
1050 A- 
1030 B+
990 B- 
970 C+
930 C- 
910 D+
870 D- 

Project Turn-In Procedures

Bonus Days and Late Assignments

Projects are due at 23:59:59 on the listed due date, with the following exception:

Each of you has been granted five Bonus Days, which are no-questions-asked one-day extensions which may be applied to any project, subject to the following rules:

  1. No more than 2 Bonus Days may be applied to any one project
  2. Bonus Days cannot be applied to tests
  3. Bonus Days cannot be applied such that they extend a project due date past the start of Test #2.

To redeem one or two Bonus Days, turn in your project first. Then, send me an email giving me your name, the project number, and the number of days you will be redeeming.

Downloadable Files

None yet.

Class Rules

Students With Disabilities

Accommodations for students with disabilities are determined and approved by Disability Access Services (DAS). If you, as a student, believe you are eligible for accommodations, but have not obtained approval, please contact DAS immediately at 541-737-4098 or at http://ds.oregonstate.edu. DAS notifies students and faculty members of approved academic accommodations and coordinates implementation of those accommodations. While not required, students and faculty members are encouraged to discuss details of the implementation of individual accommodations.

Other Useful Online Parallel Programming Information