Fall 2012: Implementing, Optimizing, and Compiling Concurrent Programs
This course will focus on concerns, problems, and techniques related to the implementation of modern, shared-memory concurrent programming languages. This includes consideration of core parallel programming idioms, safety concerns, efficiency, and hardware constraints. The course will cover both practical, low-level implementation issues, as well as theoretical properties and programming models.
A non-exhaustive list of topics that will be covered includes:
Prerequisites: Students should have an interest in language implementation and operating-system level development. Knowledge of material typically covered in an undergraduate operating systems course (such as COMP 310) will be assumed. Previous experience with concurrent, parallel, or distributed programming and compiler design may be helpful, but is not required.
- basic and advanced concurrency control mechanisms
- modern shared-memory hardware
- race-conditions, deadlock, livelock, fairness
- memory consistency
- program analysis for concurrency
- data locality
- thread scheduling
- speculative and transactional approaches