CS 15-212: Fundamental Structures of Computer Science II
As a final topic for the course we introduce some of the important ideas of concurrent programming. Concurrent programming is difficult. This is because the inherent nondeterminism in concurrent programs is generally hard to reason about. However, the right language support can help to build good programs (just as for sequential programming). CML is a concurrent extension of SML that supports various abstractions for concurrent programming using message-passing communication. We overview CML's basic primitives of threads, channels, and events, and compare them to the shared-memory model that Java uses.