Lecture Notes: Theory (and Practice) of Programming Languages

Welcome! In this course, we study programming language concepts and paradigms in the context of contemporary software engineering practice. This version of the course is normally taught by Konstantin Läufer and focuses on functional and concurrent programming languages with examples and projects mostly in Scala.

We maintain these lecture notes using GitHub. We also offer PDF and ePub formats for offline/mobile reading.

Warning

These notes are still being written, so expect a few rough edges. But we’re getting closer! Your contributions are highly welcome! Please submit issues and pull requests.

Todo

add sample projects, activities, tests, and (tiered) master list for presentations