COMP-623A: Concurrent Programming Languages
School of Computer Science
McGill University
Fall 2005
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
Email: clump@cs.mcgill.ca
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:
- Lewis & Berg. Multithreaded Programming with Java Technology.
- Norton & Dipasquale. Threadtime: The Multithreaded Programming Guide. (Another PThreads reference)
- Andrews. Foundations of Multithreaded, Parallel, and Distributed Programming. (Covers basic concurrency issues)
- Roscoe. The Theory and Practice of Concurrency. (Lots of info on CSP)
- Milner. Communication and Concurrency. (Main reference for CCS)
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.
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
http://www.mcgill.ca/integrity 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.
- Assignment 1 is available here. And here are some small examples of multithreaded programming in Java and in PThreads. A PThreads API summary is available here.
- Assignment 2 is available here.
A tutorial document on Π-calculus is
here.
- A minimal sample GUI in Java for you to build on for those requiring
visual representations for their projects is available
here. To run the test you will need
this image.
- Assignment 3 is available here.
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.