The goal of this course is to show students how to design better programming languages, developer tools, development frameworks and libraries. The course covers rigorous methods for programming language and library design, ranging from formal methods based on logic and programming language theory, to human-computer interaction methods based on qualitative and quantitative user studies.
This course is no longer taught, sorry!
The course was taught in 2022/23 and 2024/25, but it will not run in its original form in the future. The slides from the course are available below, but unfortunately, there are no recordings. Some of the materials were incorporated into other more long-term courses including Principles of Programming Languages (NPRG084), Theory of Programming Languages (NPRG085) and also one off course Cultures of Programming (NPRG088).
Looking for a replacement? Check out Tomas Petricek's current teaching!
Course archives
- Course page for 2022/23 includes original version of materials and a few essays written by course attendees
- Course page for 2024/25 includes slightly revised versions from the second run
