COMP-623A: Concurrent Programming Languages

School of Computer Science
McGill University
Fall 2005

Time and Place

Monday, Wednesday: 13:05 - 14:25
McConnell Eng 103
Please consult Minerva for the most up-to-date scheduling & classroom location information.


Clark Verbrugge
Office: McConnell, room 230
Office hours (Fall term): Wednesday 9:00-10:30, Friday 11:30-13:00, or by appointment
Phone: 398-2411

Teaching Assistant

Grzegorz Prokopski
Office: McConnell, room 234
Office hours: Thursday 10:00--13:00, or by appointment
Email: gadek at debian dot org


Students should have a solid understanding of basic data structures, operating systems concepts and programming languages. There is a non-trivial programming requirement; ability to program in C or Java will be required.


Supplementary texts: Multithreaded Programming with Java Technology by Lewis and Berg or Multithreaded Programming with PThreads by Lewis and Berg. These are optional texts with additional information on multithreaded programming. Each of these supplementary texts covers much the same material, emphasizing either Java or POSIX (Pthreads). Class examples will be primarily in Java, but unless otherwise stated students may complete assignments using either environment/language.
There is no required text for this course.

The above texts are available at the McGill bookstore, and will be further supplemented by class handouts. The following texts are available on reserve in the Schulich library as further reference for some of the concepts covered in class:

Course Overview/Objectives

Students will learn basic and advanced means for expressing and analyzing concurrency. This includes practical implementation issues and designs, as well as more abstract concepts or paradigms presented using a wide variety of theoretical formalisms and languages.

Upon completion of the course, students should have a good understanding of concurrent programming constructs and how to use them effectively.

Course Syllabus

A detailed syllabus is available here in pdf form.


3 Assignments: 45%
Project Proposal: 5%
Project: 50%

McGill University values academic integrity. Therefore all students must understand the meaning and consequences of cheating, plagiarism and other academic offenses under the Code of Student Conduct and Disciplinary Procedures (see for more information).

Most importantly, work submitted for this course must represent your own efforts. Copying assignments or tests from any source, completely or partially, or allowing others to copy your work, will not be tolerated.


Assignment descriptions and information will be posted here as term progresses.
Project Students will be expected to design & implement a project that demonstrates knowledge of concurrency. The project can be a theoretical examination of a particular topic of interest, or a significant programming project involving non-trivial concurrency. Project details and suggestions will be distributed in class (and posted here) at the beginning of October. Note that group projects are not allowed.