COMP-599: Topics in Computer Science 2

Implementing, Optimizing, and Compiling Concurrent Programs

School of Computer Science
McGill University
Fall 2012

Time and Place

Tuesday, Thursday: 9:35 - 10:55
Please consult Minerva for the most up-to-date scheduling & classroom location information.


Clark Verbrugge
Office: McConnell, room 230
Office hours: Tuesday 11:00–12:30, Friday 10:00–11:30
Phone: 514-398-2411 but don't call me, use email


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 or ECSE 427) will be assumed.

Previous experience with concurrent, parallel, or distributed programming and compiler design may be helpful, but is neither required nor assumed.


There is no required text for this course. Material is primarily based on a variety of academic papers and publications. The following text, however, is recommended for some of the basic material, and has been placed on reserve in the Schülich library:

Course Overview/Objectives

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, implementation design, and efficiency. The course will largely focus on current research directions that address practical implementation issues, but will also include discussion of theoretical properties and programming models.

Upon completion of the course, students should have a good understanding of current and research-based concurrent programming models and their related implementation, correctness, and efficiency concerns.

Course Syllabus

This is a project and presentation course. It will begin with a few weeks of lectures on basic concurrency concerns to ensure essential background is covered. The remainder of the course time will be devoted to formal presentations by students, addressing a breadth of current research directions in concurrent language implementation and design. A final project, consisting of either an experimental study or a more detailed examination of a concurrency topic is also required.

A detailed syllabus is available here


3 Presentations: 50%
Project proposal: 5%
Participation: 10%
Project report: 35%