EECS 221: Multicore Programming

Instructor: Brian Demsky
Lectures: TuTh 3:30-4:50pm in DBH 1300
Office Hours: Thursday 2:30pm-3:30pm in EH 4414



Multicore processors have become ubiqitious. They are found in every class of computing device ranging from powerful servers to cell phones. Fully leveraging the computational resources of these processors requires writing concurrent code.

This class will explore formalisms for reasoning about concurrent data structures and the development of concurrent data structures including lock-free and wait-free data structures. We will explore the design of scalable data structures.

Concurrent data structures are implemented using programming languages and execute on modern processors. Optimizations in both compilers and processors complicate parallel programming. Language and hardware memory models specify the legal program visible behaviors. We'll explore common hardware and language memory models in this class.

The class will also explore tools such as model checkers that can help developers write correct concurrent data structures.

The class will assume that everyone is already familiar with both computer architecture, operating systems, algorithms, and already experts in the use of threads and locks. This course is going to explore correctness models for concurrent data structures (linearizable, SC, etc). We'll look at and design lock-free, wait-free concurrent data structures. They will be some coding projects of developing concurrent data structure implementations.