Welcome to the blog for Languages and Abstractions for Distributed Programming, the graduate seminar course I’m teaching this fall at UC Santa Cruz!

In this course, my students and I are exploring the theory and practice of distributed programming from a programming-languages perspective, mostly by studying the application of PL techniques to the problems of distributed systems. We began with the CAP trade-off, then moved on to the zoo of distributed consistency models — from session guarantees, to causal consistency (with and without convergent conflict handling), to linearizability. We’ve also spent some time on the theory and practice of replicated data types. All this has given us the necessary background to study languages, abstractions, and verification tools for combining consistencies in distributed systems.

As we’ve been going along, each student in the class has been coming up with their own research questions germane to the course topic and doing their own independent investigations, and here on the blog is where we’ll chronicle our progress on that work. Our first round of student blog posts will start to go up this week, and I’m excited about what the students have planned to share with the world!

Although some of the papers we’ve been reading are quite dense, I hope this blog won’t be. We aim to write in a way that’s accessible to a general technical audience, and we’ll work hard to make the blog — dare I say it? — fun to read. We hope you’ll let us know what you think.

(By the way, in the remaining month of class, we’ll be studying lots more languages and frameworks for distribution, with a side trip into abstractions for configuration management. If you’re interested in that stuff, follow along with our schedule of readings!)