...
The prerequisite course requirements are COMP 182 and COMP 215. COMP 322 should be accessible to anyone familiar with the foundations of sequential algorithms and data structures, and with basic Java programming. COMP 321 is also recommended as a co-requisite.
Textbooks and Other Resources
There are no required textbooks for the class. Instead, lecture handouts are provided for each module as follows. You are expected to read the relevant sections in each lecture handout before coming to the lecture. We will also provide a number of references in the slides and handouts.The links to the latest versions of the lecture handouts are included below:
...
- Fork-Join Parallelism with a Data-Structures Focus (FJP) by Dan Grossman (Chapter 7 in Topics in Parallel and Distributed Computing)
- Java Concurrency in Practice by Brian Goetz with Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes and Doug Lea
- Principles of Parallel Programming by Calvin Lin and Lawrence Snyder
- The Art of Multiprocessor Programming by Maurice Herlihy and Nir Shavit
Finally, here are some additional resources that may be helpful for you:
- Slides titled "MPI-based Approaches for Java" by Bryan Carpenter
Past Offerings of COMP 322
- Spring 2016 (Rice University)
- Spring 2015 (Rice University)
- Spring 2014 (Rice University)
- Spring 2013 (Rice University)
- Fall 2012 (Harvey Mudd College CS 181E, half-semester class, co-instructor: Prof. Ran Libeskind-Hadas)
- Spring 2012 (Rice University)
- Spring 2011 (Rice University)
- Fall 2009 (Rice University)
...
Week | Day | Date (2017) | Lecture | Assigned Reading | Assigned Videos (see Canvas site for video links) | In-class Worksheets | Slides | Work Assigned | Work Due |
---|---|---|---|---|---|---|---|---|---|
1 | Mon | Jan 09 | Lecture 1: Task Creation and Termination (Async, Finish) | Module 1: Section 1.1 | worksheet1 | lec1-slides |
|
| |
| Wed | Jan 11 | Lecture 2: Computation Graphs, Ideal Parallelism | Module 1: Sections 1.2, 1.3 | Topic 1.2 Lecture, Topic 1.2 Demonstration, Topic 1.3 Lecture, Topic 1.3 Demonstration | worksheet2 | lec2-slides |
| |
Fri | Jan 13 | Lecture 3: Abstract Performance Metrics, Multiprocessor Scheduling | Module 1: Section 1.4 | Topic 1.4 Lecture, Topic 1.4 Demonstration | worksheet3 | lec3-slides |
| ||
2 | Mon | Jan 16 | No lecture, School Holiday (Martin Luther King, Jr. Day) | ||||||
| Wed | Jan 18 | Lecture 4: Parallel Speedup and Amdahl's Law | Module 1: Section 1.5 | Topic 1.5 Lecture, Topic 1.5 Demonstration | worksheet4 | lec4-slides | ||
| Fri | Jan 20 | Lecture 5: Future Tasks, Functional Parallelism ("Back to the Future") | Module 1: Section 2.1 | Topic 2.1 Lecture, Topic 2.1 Demonstration | worksheet5 | lec5-slides | ||
3 | Mon | Jan 23 | Lecture 6: Memoization | Module 1: Section 2.2 | Topic 2.2 Lecture, Topic 2.2 Demonstration | worksheet6 | lec6-slides | ||
Wed | Jan 25 | Lecture 7: Finish Accumulators | Module 1: Section 2.3 | Topic 2.3 Lecture, Topic 2.3 Demonstration | worksheet7 | lec7-slides | Homework 1 | ||
| Fri | Jan 27 | Lecture 8: Map Reduce | Module 1: Section 2.4 | Topic 2.4 Lecture, Topic 2.4 Demonstration | worksheet8 | lec8-slides |
| Quiz for Unit 1 |
4 | Mon | Jan 30 | Lecture 9: Data Races, Functional & Structural Determinism | Module 1: Sections 2.5, 2.6 | Topic 2.5 Lecture, Topic 2.5 Demonstration, Topic 2.6 Lecture, Topic 2.6 Demonstration | worksheet9 | lec9-slides | ||
| Wed | Feb 01 | Lecture 10: Java’s Fork/Join Library | Module 1: Sections 2.7, 2.8 | Topic 2.7 Lecture, Topic 2.8 Lecture, | worksheet10 | lec10-slides | ||
| Fri | Feb 03 | Lecture 11: Loop-Level Parallelism, Parallel Matrix Multiplication, Iteration Grouping (Chunking) | Module 1: Sections 3.1, 3.2, 3.3 | Topic 3.1 Lecture , Topic 3.1 Demonstration , Topic 3.2 Lecture, Topic 3.2 Demonstration, Topic 3.3 Lecture , Topic 3.3 Demonstration | worksheet11 | lec11-slides | ||
5 | Mon | Feb 06 | Lecture 12: Barrier Synchronization | Module 1: Section 3.4 | Topic 3.4 Lecture , Topic 3.4 Demonstration | worksheet12 | lec12-slides | ||
Wed | Feb 08 | Lecture 13: Parallelism in Java Streams, Parallel Prefix Sums | worksheet13 | lec13-slides | Homework 2 | ||||
- | Fri | Feb 10 | Spring Recess | Quiz for Unit 2 | |||||
6 | Mon | Feb 13 | Lecture 14: Iterative Averaging Revisited, SPMD pattern | Module 1: Sections 3.5, 3.6 | Topic 3.5 Lecture , Topic 3.5 Demonstration , Topic 3.6 Lecture, Topic 3.6 Demonstration | worksheet14 | lec14-slides | ||
| Wed | Feb 15 | Lecture 15: Phasers Data-Driven Tasks, Point-to-point Point Synchronization with Phasers | Module 1: Sections 4.5, 4.2, 4.3 | Topic 4.5 Lecture Topic 4.5 Demonstration, Topic 4.2 Lecture , Topic 4.2 Demonstration, Topic 4.3 Lecture, Topic 4.3 Demonstration | worksheet15 | lec15-slides | ||
| Fri | Feb 17 | Lecture 16: Phasers Review | Module 1: Sections 4.2 | Topic 4.2 Lecture , Topic 4.2 Demonstration | worksheet16 | lec16-slides | Quiz for Unit 3 | |
7 | Mon | Feb 20 | Lecture 17: Midterm Summary | lec17-slides | |||||
| Wed | Feb 22 | Midterm Review (interactive Q&A, no lecture) | Exam 1 held during lab time (7:00pm - 10:00pm), scope of exam limited to lectures 1-16 | |||||
| Fri | Feb 24 | Lecture 18: Abstract vs. Real Performance | worksheet18 | lec18-slides | Homework 3, Checkpoint-1 | |||
8 | Mon | Feb 27 | Lecture 19: Pipeline Parallelism, Signal Statement, Fuzzy Barriers | Module 1: Sections 4.4, 4.1 | Topic 4.4 Lecture , Topic 4.4 Demonstration, Topic 4.1 Lecture, Topic 4.1 Demonstration, | worksheet19 | lec19-slides |
| |
| Wed | Mar 01 | Lecture 20: Critical sections, Isolated construct, Parallel Spanning Tree algorithm, Atomic variables (start of Module 2) | Module 2: Sections 5.1, 5.2, 5.3, 5.4, 5.6 | Topic 5.1 Lecture, Topic 5.1 Demonstration, Topic 5.2 Lecture, Topic 5.2 Demonstration, Topic 5.3 Lecture, Topic 5.3 Demonstration, Topic 5.4 Lecture, Topic 5.4 Demonstration, Topic 5.6 Lecture, Topic 5.6 Demonstration | worksheet20 | lec20-slides |
| |
| Fri | Mar 03 | Lecture 21: Read-Write Isolation, Review of Phasers | Module 2: Section 5.5 | Topic 5.5 Lecture, Topic 5.5 Demonstration | worksheet21 | lec21-slides | Quiz for Unit 4 | |
9 | Mon | Mar 06 | Lecture 22: Actors | Module 2: 6.1, 6.2 | Topic 6.1 Lecture , Topic 6.1 Demonstration , Topic 6.2 Lecture, Topic 6.2 Demonstration | worksheet22 | lec22-slides |
|
|
| Wed | Mar 08 | Lecture 23: Actors (contd) | Module 2: 6.3, 6.4, 6.5, 6.6 | Topic 6.3 Lecture, Topic 6.3 Demonstration, Topic 6.4 Lecture , Topic 6.4 Demonstration, Topic 6.5 Lecture, Topic 6.5 Demonstration, Topic 6.6 Lecture, Topic 6.6 Demonstration | worksheet23 | lec23-slides |
| Homework 3, Checkpoint-2 |
| Fri | Mar 10 | Lecture 24: Java Threads, Java synchronized statement | Module 2: 7.1, 7.2 | Topic 7.1 Lecture, Topic 7.2 Lecture | worksheet24 | lec24-slides | Quiz for Unit 5 | |
- | M-F | Mar 13 - Mar 17 | Spring Break | ||||||
10 | Mon | Mar 20 | Lecture 25: Java synchronized statement (contd), wait/notify | Module 2: 7.2 | Topic 7.2 Lecture | worksheet25 | lec25-slides |
| |
| Wed | Mar 22 | Lecture 26: Java Locks, Linearizability of Concurrent Objects | Module 2: 7.3, 7.4 | Topic 7.3 Lecture, Topic 7.4 Lecture | worksheet26 | lec26-slides | (includes one intermediate checkpoint) | Homework 3 (all) |
| Fri | Mar 24 | Lecture 27: Safety and Liveness Properties, Java Synchronizers, Dining Philosophers Problem | Module 2: 7.5, 7.6 | Topic 7.5 Lecture, Topic 7.6 Lecture | worksheet27 | lec27-slides | Quiz for Unit 6 | |
11 | Mon | Mar 27 | Lecture 28: Message Passing Interface (MPI), (start of Module 3) | Topic 8.1 Lecture, Topic 8.2 Lecture, Topic 8.3 Lecture, | worksheet28 | lec28-slides | |||
| Wed | Mar 29 | Lecture 29: Message Passing Interface (MPI, contd) | Topic 8.4 Lecture, Topic 8.5 Lecture, Topic 8 Demonstration Video | worksheet29 | lec29-slides |
| ||
| Fri | Mar 31 | Lecture 30: Apache Hadoop and Spark frameworks for Map-Reduce | Topic 9.1 Lecture (optional, overlaps with video 2.4), Topic 9.2 Lecture, Topic 9.3 Lecture | worksheet30 | lec30-slides | Quiz for Unit 7 | ||
12 | Mon | Apr 03 | Lecture 31: TF-IDF and PageRank Algorithms with Map-Reduce | Topic 9.4 Lecture, Topic 9.5 Lecture, Unit 9 Demonstration | worksheet31 | lec31-slides |
| ||
| Wed | Apr 05 | Lecture 32: Combining Distribution and Multithreading | Lectures 10.1 - 10.5, Unit 10 Demonstration (optional, unit 10 has no quiz) | worksheet32 | lec32-slides |
| Homework 4 Checkpoint-1 | |
| Fri | Apr 07 | Lecture 33: Eureka-style Speculative Task Parallelism | worksheet33 | lec33-slides |
| Quiz for Unit 8 | ||
13 | Mon | Apr 10 | Lecture 34: Task Affinity with Places | worksheet34 | lec34-slides |
| |||
| Wed | Apr 12 | Lecture 35: Partitioned Global Address Space (PGAS) programming models | worksheet35 | lec35-slides | Homework 5 (Due April 21st, with automatic extension until May 1st after which slip days may be used) | Homework 4 (all) | ||
| Fri | Apr 14 | Lecture 36: Algorithms based on Parallel Prefix (Scan) operations | worksheet36 | lec36-slides | Quiz for Unit 9 | |||
14 | Mon | Apr 17 | Lecture 37: GPU Computing | worksheet37 | lec37-slides |
| |||
| Wed | Apr 19 | Lecture 38: Topic TBD
|
|
| ||||
| Fri | Apr 21 | Lecture 39: Course Review (lectures 19 - 38), Last day of classes | lec38-slides | Homework 5 (automatic extension until May 1st, after which slip days may be used) | ||||
- | Mon | Apr 24 | Review session / Office Hours, 1pm - 3pm, location TBD | ||||||
- | Wed | Apr 26 | Review session / Office Hours, 1pm - 3pm, location TBD | ||||||
- | Fri | Apr 28 | Review session / Office Hours, 1pm - 3pm, location TBD | ||||||
- | Tue | May 2 | 9am - 12noon, scheduled final exam (Exam 2 – scope of exam limited to lectures 19 - 38), location TBD by registrar |
|
|
|
...