COMP-599: Topics in Computer Science 2
Implementing, Optimizing, and Compiling Concurrent Programs
School of Computer Science
Tuesday, Thursday: 9:35 - 10:55
Please consult Minerva for
the most up-to-date scheduling & classroom location information.
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:
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
- The Art of Multiprocessor Programming (Revised First Edition) by
Maurice Herlihy and Nir Shavit.
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.
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%
Project report: 35%