Table of Contents


January 6

Herb Sutter and James Larus. Software and the Concurrency Revolution. Queue, 3(7):54-62, September 2005.

Celeste Biever. Chip revolution poses problems for programmers. New Scientist, 2594:26-27, March 2007.

Bryan Cantrill and Jeff Bonwick. Real-world concurrency. Communications of the ACM, 51(11):34-39, November 2008.

Slides of lecture 1.

January 8

A guest lecture by librarian Jacqueline Kreller-Vanderkooy will take place in the Steacie Building, room 021B (the basement computer lab). Ask at the library reference desk for room 021B if you cannot find it.

Leah Graham and Panagiotis Takis Metaxas. Of course it's true; I saw it on the Internet! Communications of the ACM, 46(5):70-75, May 2003.

Neil L. Waters. Why you can't cite Wikipedia in my class. Communications of the ACM, 50(9):15-17, September 2007.

January 13

Chapter 1 of

Mordechai Ben-Ari. Principles of Concurrent and Distributed Programming. Second edition. Addison-Wesley, Harlow, UK, 2006.

Slides of lecture 3.

January 15

P.J. Courtois, F. Heymans and D.L. Parnas. Concurrent control with "readers" and "writers". Communications of the ACM, 14(10): 667-668, October 1971.

Edsger W. Dijkstra. Two starvation-free solutions of a general exclusion problem. EWD 625.

Suhas S. Patil. Limitations and Capabilities of Dijkstra's Semaphore Primitives for Coordination among Processes. Computation Structures Group Memo 57, Massachusetts Institute of Technology, February 1971.

Allen B. Downey. The Little Book of Semaphores.

Slides of lecture 4.

January 20

C.A.R. Hoare. Monitors: an operating system structuring concept. Communications of the ACM, 17(10):549–557, October 1974.


Slides of lecture 5.

January 24

C.A.R. Hoare. Communicating Sequential Processes. Communications of the ACM, 21(8):666-677, August 1978.

Additional material can be found in
Steve Schneider. Concurrent and Real-time Systems: the CSP Approach. John Wiley & Sons. 1999.

Slides of lecture 6.

January 27

R. Kent Treiber. System programming: coping with parallelism. Report RJ 5118. IBM Almaden Research Center, San Jose, CA, USA. April 1986.

Slides of lecture 7.

January 29

Mary Campione, Kathy Walrath and Alison Huml. The Java Tutorial. Lesson: Threads: Doing Two or More Tasks At Once.

Slides of lecture 8.

February 3

Mary Campione, Kathy Walrath and Alison Huml. The Java Tutorial. Lesson: Threads: Doing Two or More Tasks At Once.

February 5

Presentations of the first assignment.

Slides of lecture 10.

February 10

Brian Goetz, Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes and Doug Lea. Java Concurrency in Practice. Addison-Wesley, 2006.

Slides of lecture 11

Java PathFinder: a tool to detect bugs in Java code

February 12

A guest lecture by Susan Visser, Publishing Program Manager at IBM, on writing.

The Art of Technical Writing

February 24

Communicating Sequential Processes for Java

CSP for Java programmers, Part 1 CSP for Java programmers, Part 2 CSP for Java programmers, Part 3

Slides of lecture 13

February 26

Slides of lecture 14

March 12

A guest lecture by Trevor Brown on MTL. Information about MTL can be found here.

Slides of lecture 15

March 17

Slides of lecture 16

March 19

Presentations of the second assignment

Slides of lecture 17

March 24

Slides of lecture 19

March 26

Slides of lecture 20

April 2

Presentations of the third assignment.