- Wed, Jan 13:
**Lecture**: Introduction**In-class exercise**: Sorting cards in groups

- Mon, Jan 18:
**No Class (MLK day)**

- Wed, Jan 20
**Paper discussion**:- Software and the Concurrency Revolution by Sutter
- The Free Lunch Is Over A Fundamental Turn Toward Concurrency in Software by Sutter and Larus

**Lecture**: Introduction (continued)

- Mon, Jan 25
**Homework due**: Homework 1**Homework discussion**: discussion of homework 1**Lecture**: Performance

- Wed, Jan 27
**Paper discussion**: Niagara: A 32-Way Multithreaded SPARC Processor**Lecture**: Performance (continued)

- Mon, Feb 1
**Lecture**: Performance (continued)

- Wed, Feb 3
**Paper discussion**:- Primary: Producing Wrong Data Without Doing Anything Obviously Wrong!
- Secondary: Strong Inference

**Lecture**: Synchronization

- Mon, Feb 8
**Homework discussion**: discussion of homework 2*initial*results**Lecture**: Synchronization (continued)

- Wed, Feb 10
**No Class (snow day)**

- Mon, Feb 15
**Homework due**: Homework 2**Homework discussion**: discussion of homework 2*final*results**Lecture**: Synchronization (continued)

- Wed, Feb 17
**Paper discussion**: Selecting Locking Primitives for Parallel Programming and Selecting Locking Designs for Parallel Programs**In-class exercise**: parallel data structure challenge problems (hash table, queue, and multiset)

- Mon, Feb 22
**Homework discussion**: discussion of homework 3*initial*results**Paper discussion**: Simple, Fast, and Practical Non-Blocking and Blocking Concurrent Queue Algorithms**Lecture**: Parallel Data Structures and Algorithms**Reference material**: Prefix Sums and Their Applications by Guy Blelloch

- Wed, Feb 24
**Paper discussion**: Hoard: A Scalable Memory Allocator for Multithreaded Applications**Lecture**: OpenMP**Homework due**: Homework 3 (under my door by Friday at 5pm)

- Mon, Mar 1
**Homework discussion**: discussion of homework 3*final*results**Lecture**: Tasks

- Wed, Mar 3
**Paper discussion**: The Implementation of the Cilk-5 Multithreaded Language**Homework discussion**: discussion of homework 4*initial*results**Lecture**: Cilk**Homework due**: Homework 4 (under my door by Friday at 5pm)

- Mon, Mar 8:
**No Class (Spring break)** - Wed, Mar 10:
**No Class (Spring break)** - Mon, Mar 15
**Paper discussion**: A Java Fork/Join Framework versus Grand Central Dispatch

- Wed, Mar 17
**Paper discussion**: Future-Proof Data Parallel Algorithms and Software on Intel Multi-Core Architectures**Lecture**: Vectors

- Mon, Mar 22
**Paper discussion**: NVIDIA Tesla: A Unified Graphics and Computing Architecture**Lecture**: GPUs

- Wed, Mar 24
**Paper discussion**: Fast N-Body Simulation with CUDA**Lecture**: GPUs

- Mon, Mar 29
**Paper discussion**: Larrabee: A Many-Core x86 Architecture for Visual Computing**Lecture**: Larrabee

- Wed, Mar 31
**Guest Lecture (Joe Kider)**: GPU Case Studies and GPU Reduction

- Mon, Apr 5
**Lecture**: TBB

- Wed, Apr 7:
**No Class** - Mon, Apr 12
**Paper discussion**: Eraser: A Dynamic Data Race Detector for Multithreaded Programs

- Wed, Apr 14
**Lecture**: Memory Consistency

- Mon, Apr 19
**Paper discussion**: Threads Cannot Be Implemented As a Library**Reference material**: Memory Models: A Case for Rethinking Parallel Languages and Hardware**Lecture**: Transactional Memory

- Wed, Apr 21:
**Lecture**: Wrapup

- Mon, Apr 26: Project presentations (6 groups x 12 minutes)