Syllabus for

Parallel Algorithms

COSC 612

(M/W, 9:00-10:50, PH503)

Instructor: Matt Evett ; Dept. Computer Science; Pray Harrold 520
Tel: 734-487-1227
e-mail: mevett _AT_SIGN_ emich.edu;
online: canvas.emich.edu
Office Hours: [script error if you see this] or by appointment. I should be available via Zoom during office hours. See the Syllabus link in Canvas for the Zoom link. You may drop by at times other than office hours, but in that case I cannot guarantee that I'll be able to see you. Prerequisite: COSC 211 and 231.

Textbooks:

Course Summary: A course in design, analysis, and implementation of algorithms for parallel programming. Sorting, searching, matrix multiplication, graph theory and other fundamental areas of computation are considered for parallel program design. Students will implement parallel algorithms on parallel architectures, such as GPUs.

Course Calendar:

The dates below are tentative. Actual due dates are always and exclusively found via Canvas. Beware due dates from 2020. If you see a due date in Canvas for 2020, I have not yet assigned that work!!! The assignment may well change before I give it out, setting an actual due date.
 

Date Topics
8/25, 27 Introduction to Parallelism
Labor Day, 9/3

CUDA and C

Example: Basic vector addition

9/8, 10

CUDA memory model. Chapter 3

9/15, 17

CUDA memory model (cont.)

CUDA memory model. Chapter 4

9/22, 24

CUDA memory model. Chapter 4

Performance Considerations. Chapter 5

9/29, 10/1

Performance Considerations. Chapter 5

Parallel Pattern: Convolution

10/6, 8

Parallel Patttern: Prefix Sum

Parallel Pattern: Histogram Calculation

10/13, 15

Fall Break

10/20, 22

Parallel Pattern: Spare matrix calculations

Parallel Merge Sort

 

10/27, 29

Parallel graph search

11/3, 5

Dynamic Parallelism

11/10, 12

Case study: non-Cartesian magnetic resonance imaging

Case study: molecular visualization and analysis

11/17, 19 Case study: machine learning
11/24, Thanksgiving Parallel programming and computational thinking
12/1, 3 MPI (heterogenous clusters) and OpenACC
12/8, 10 OpenACC
12/17 9:00 Final Exam, 9:00 AM

Grading Policy:

Students will submit written and programming assignments. In addition there will be lab assignments throughout the course.

The final course grade will be a weighted average of the grades received in each of the following categories, as specified: Assignments 58% ,Midterm exam 20%, Final exam 20%, Class participation 2%. Within the first group, each individual assignment's relative value is indicated by the number of points allocated to it in Canvas.

Tardiness Policy: Programming and other homework assignments will be due at the beginning of class. After that, assignments will be accepted through the start of the next scheduled class, but will suffer a full grade penalty. E.g., if a late programming assignment is worthy of an 'A', I will mark it a 'B'. Assignments more than one class late will not be accepted, and will receive a grade of 'F'. Missed assignments, and exams shall only be excused by a doctor's written note, verifying that the student was medically indisposed to participate on that day.

Grading of Programs: Programs shall be submitted to the online "dropbox" corresponding to each assignment and will consist of a zip file of the source code or of an Eclipse project directory. The zip file should also contain a file named "README.txt", a simple text file, containing any directions I might need to run your program, as well as a description of any known bugs in the program. Grading of programming assignments will reflect three factors, weighted as shown.

  1. (60%) Correctness -- does the program run correctly?
  2. (20%) Style -- does the code adhere to class documentation standards? Is the code indented properly? Are the variable names mneumonic? How well has the student followed the basic formatting characteristics for the language?
  3. (20%) Design -- is the program adequately decomposed (i.e., are the functions and procedures small enough to be comprehensible)? Are the class and structure definitions well chosen? How well has the student taken advantage of the language's capabilities?

Announcements and the Web Page:

Students should view Canvas regularly for announcements regarding programming assignments, readings, etc. I update Canvas frequently!

The EMU Library Is Here to Help!

The Halle Library provides excellent resources for writing and research (including avoiding plagiarism). You can get more information on this at this link: https://docs.google.com/document/d/1KaCkdV59k2eo7GepHnrimPOhPcXONdXe6hh2A2KJjmE/edit

Cheating policy:

Students are required to attend to the University policy on academic dishonesty outlined in Sections V and VIII (Provisions Governing Acts of Academic Dishonesty) of EMU's Code of Community Responsbility (see the full policy at https://www.emich.edu/policies/index.php?p=8.1). In addition, collaboration among students in solving programming and homework assignments is forbidden. If I receive programs or homework assignments that are substantially equivalent, or which are not the original work of the student submitting the material, I will not hesitate to punish all involved parties to the fullest extent, up to and including assignment of a failing grade for the course, and referral to the Office of Judicial Student Services for possible punitive action at the University level, which may include expulsion from the University. In addition, the University and the Computer Science Department maintain policies regarding proper behavior on its computer systems. Failure to adhere to these policies can result in loss of computer privileges, and possible legal action.