CATALOG DESCRIPTION: You will not get the automatic speedup for your software when you upgrade to a new computer, since the frequency scaling is virtually stopped, and you only get more cores on new machines. For speed, you have to do concurrent programming for multicores. This course will teach you how to do it effectively. We will start with synchronization primitives, mutual exclusion, and consensus, and talk about different programming models such as multi-threading, locking, and transactional memory. We will also discuss how to debug and check concurrent programs, which may give your different behaviors at different executions.

TEXT: Herlihy and Shavit, The Art of Multiprocessor Programming, Revised First Edition, Elsevier, 2012.

COURSE COORDINATOR: Prof. Hai Zhou

PREREQUISITE: EECS 110 or EECS 111.

SCHEDULE
Week 1: Introduction to Concurrency and Its Challenges
Week 2: Mutual Exclusion
Week 3: Concurrent Objects
Week 4: Foundations of Shared Memory
Week 5: Primitive Synchronization Operations
Week 6: Universality of Consensus
Week 7: Spin Locks and Contention
Week 8: Distributed Coordination
Week 9: Barriers
Week 10: Transaction Memory

DETAILED COURSE TOPICS:

GRADES:

COURSE OBJECTIVES:

ABET CONTENT CATEGORY: