CS257-Programming with Concurrency
Plan of study
CS 257 will study concurrency from a programming-language perspective:
design, application, and implementation.
Emphasis will be on three kinds of material:
We will also venture briefly into theory and applications of
- The evolution of language features for
from shared memory through message passing to transactions
- Implementation techiques for concurrent
including what goes wrong when you have a multiprocessor
- Analysis and checking tools for finding bugs in
The syllabus will be approximately as follows:
A new, improved schedule is online.
- In September, early models of concurrency and their implementation
- In October, message passing:
language features, applications, implementation, and modelling
- In November, atomicity:
atomic instructions, atomic sequences, atomicity in type systems and
checkers, and atomicity as a language feature (transactions)
- In December, semantics:
ugly truths about real machines and why things go wrong,
how it may be possible to fix them,
beautiful mathematical models of concurrency
CS 257 will be run in a seminar format.
Participants will meet twice weekly; once for
90 minutes and once for about two hours.
meetings will be devoted to presentation and discussion of papers
chosen from the professional literature, although background lectures will be
given from time to time as needed.
Because the course is based on discussion of papers, class
participation is paramount.
The course will also involve one homework assignment and a
substantial final project.
The bulk of a student's grade will be based on his or her class
participation and on the project.
One homework assignment will be to build a simple application using a
language, and one to model an application using a modeling tool.
The project will offer
each student broad latitude to tailor a project to his or
her own interests; possibilities include
a design project, a programming (application)
project, an implementation project, a program-analysis project, or a
Oral and written presentations of each project are expected.
I hope, at the end of the course, to invite a jury of
distinguished visitors to attend a short workshop, in which
students will have the opportunity to present their
There will be no examinations.
A student considering 257 should have a background in either systems
Useful background includes synchronization, call stacks, machine
instructions, and programming-language semantics.
No student is expected to have all of this background:
it is sufficient to have grasped material in
CS 152 (Programming Languages) or
CS 153 (Compilers) or
CS 161 (Operating Systems).
A student who is interested in the topic but does not have any of
these prerequisites may enroll in the course only with
The following calendar gives all the deadlines for the project:
- Wednesday, November 23
By the end of the day today, we need to reach final agreement in
writing (by email) about what you will do as your class project.
- Monday, January 9
``Submission draft'' due.
You should give us a draft of your project paper.
This draft should meet the same standards of clarity and completeness
as a draft you would submit to a professional workshop.
Unlike a professional submission, however, it need not describe
substantial original research.
In other words, it needs to be good enough that we can assess what
you've done and advise you on your presentation.
This deadline is firm; because I am leaving town the next day,
I need printed paper in my hand by 5:00 PM Monday.
- Tuesday, January 17
The project workshop.
You will have 30 minutes to present the results of your final
Plan on giving a 25-minute presentation and allowing 5 minutes for
At the workshop, you will receive feedback that will be directed both
at your presentation and also at revisions you may wish to make in
You are expected to attend all the talks at the workshop; plan
If you have little experience giving presentations, please consult the
section on ``How
to give a talk'' at my web site.
- Friday, January 20
Final paper due.
This deadline gives you a few days to make changes based on whatever
feedback you will have received at the workshop.
The workshop will take place on Tuesday, January 17,
in Maxwell Dworkin 319, from 1:00 to 6:00:
|1:00||Evan Mallory||A Profiler for Newsqueak|
|1:30||Kevin Donnelly||Transactional Synchronization|
|2:00||Paul Govereau||Arrows for Concurrency|
|3:00||Mike Hamburg||Rewriting Concurrent Code into Sequential Code|
|3:30||Phil Ezolt||Restartable Atomic Sequences for Linux|
|4:30||Adam Roben||Design and Implementation of a Concurrent Window Manager for X11|
|5:00||João Dias||Verifying Lock-Free Malloc|
|5:30||Matthew Fluet||A Monadic Account of First-Class Synchronous Events|
|6:00|| Workshop ends (closed session for jury)|