Norman Ramsey: CS257 - Programming with Concurrency

An interesting look course and reading list.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

And all of that in one class...

Damn, I'm envious.


No mention of the Actors model and the Pi calculus is left for the last week?


The homework, with its dual requiremnt of full formal model and implementation, looks very ambitous to me. Do others agree?

Declarative (deterministic) concurrency

There doesn't seem to be any reference to this paradigm. This is too bad, because declarative concurrency is by far the easiest form of concurrent programming. Even concurrent programs that must expose nondeterminism can use it, because the nondeterministic part can usually be relegated to just a small part of the program.

I was happy to see software transactional memory, though. In my view, that is the future of shared-state concurrency.

Re: Declarative (deterministic) concurrency

You mean stateless concurrency? Yes, I second that. But I think one should rather focus on how to deal with state (since sometimes you might just need it) with grace, instead of only talking about completely stateless approaches.

Unfortunately, there are way too many courses outthere which only talk about Java or C#, and therefore dive directly into the classical problems of safety and liveliness. This gives the impression that almost always concurrency ≅ trouble, instead of showing the students that there are completely different approaches to concurrency, with which they might not or at least not that frequently run into these issues.


Wow that looks like a great course, I would love to even see a followup of cross machine concurrency models. However stateless models don't work well for models like say game servers, I don't see how you can get around dealing with state in advanced applications, maybee the language based transactions will solve some of that. Are there any mainstream languages that have transactions built in?

Haskell and STM

While it's not quite built into the language, the (Concurrent?) Haskell's Software Transaction Memory monad library does provide transactions. It has been mentioned before in Lock-Free Data Structures using STMs in Haskell.