This page lists the topics and readings for each class. Please do the reading before coming to class.

This schedule will be updated occasionally: all updates will be announced in class and posted on the course web page.

Date Topic/Activity Reading
Jan 22 C Review Lecture 1: C Pointers and Dynamic Memory Allocation
Jan 27 Parallel computation Lecture 2: Intro to Parallel Computation, Chapters 1–2
Jan 29 MPI Lecture 3: MPI, Sections 3.1–3.3 (p. 83–101)
Feb 3 Elements of a Parallel Program Lecture 4: Elements of a Parallel Program
Feb 5
Feb 10 MPI Collective Communications Lecture 5: MPI Collective Communications, Section 3.4 (p. 101–116)
Feb 12
Feb 17 MPI Derived Datatypes Lecture 6: MPI Derived Datatypes, Section 3.5 (p. 116–119)
Feb 19 MPI Performance Lecture 7: MPI Performance, Section 3.6 (p. 119–127)
Feb 24 MPI Review
Feb 26 Exam 1
Mar 3 Winter vacation, no class
Mar 5 Winter vacation, no class
Mar 10 Pthreads introduction Lecture 8: Introduction to pthreads
Mar 12 Mutexes Lecture 9: Mutexes, Sections 4.1–4.6
Mar 17 Condition Variables Lecture 10: Condition Variables, Sections 4.7–4.8
Mar 19 Reader/writer locks, thread safety Lecture 11: Reader/Writer Locks, Sections 4.9–4.11
Mar 24 Java Threads, Synchronization Lecture 12: Java Threads, Synchronization
Mar 26 Fork/Join Parallelism Lecture 13: Fork/Join Parallelism, Doug Lea: A Java Fork/Join Framework
Mar 31 Work day
Apr 7 Lock-free data structures Lecture 14: Lock-free data structures, Maged Michael and Michael Scott, Simple, Fast, and Practical Non-Blocking and Blocking Concurrent Queue Algorithms
Apr 9 Sockets Lecture 15: Socket programming in C
Apr 14 Java Sockets Lecture 16: Socket programming in Java
Apr 16 Work day
Apr 21 GPGPU Computation, CUDA Lecture 17: GPGPU Programming, CUDA
Apr 23 GPGPU Computation Lecture 18: CUDA Threads
Apr 28 Concurrency in Clojure Lecture 19: Concurrency in Clojure
Apr 30 Exam 2
May 5 Concurrency in Erlang Lecture 20: Concurrency in Erlang