Parallelism and Concurrency (Fall 2019)

This course is an advanced course on topics in parallelism and concurrency.  The lectures will cover
  • Parallel algorithms for sequences
  • Parallel algorithms for trees
  • Parallel algorithms for graphs
  • Algorithms for thread scheduling, e.g., greedy scheduling, online scheduling, and work stealing
The students can optionally choose to do a project.  The project could be individual or team work and could involve 
  • doing research on a topic that will be agreed upon by the instructor or the student(s), or
  • building a prototype for a real-world parallel and concurrent system based on the Diderot project.  Diderot is being used by hundreds of students on a day to day basis at Carnegie Mellon and offers an excellent platform for understanding parallelism and concurrency in the real world.

Grading will be based on attendance and participation, assignments, quizzes and the project (if applicable).  The student will determine the contribution (weight) of the quizzes and the project into their final grade.  For example, the student could choose their grade based only on their project, only on their quizzes, or  mix of their choosing (OPT is a possibility). 

Pre-requisites: basic mathematical and programming skills.