Skip to content. Skip to navigation
McGill Home SOCS Home
Personal tools
You are here: Home Academic Courses Course Profile


Course Summary

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:

  • 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
  • data-parallelism
  • speculative and transactional approaches
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.

McGill Course Description (Click Here)

Fall 2015

McGill Course Calendar Details
Course Homepage


  • Patrick Hayden
        Phone: 398-5491
        E-mail: patrick AT cs DOT mcgill DOT ca
        Office Hours: Wednesdays 9:00 - 11:00