Semester: winter 2022/23
Lectures: 12:20, S7 (Tomáš Petříček)
Page in SIS: NPRG075
Grading: Credit

NOTE: The first lecture will be on October 10, 12:20 (second week)!

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.

Course outline

  1. Introduction to programming research methods: What can we say about programming?
  2. Historical look at programming systems: Recovering lost programming ideas
  3. Design perspective on programming: Inventing new interactive programming approaches
  4. Evaluating programming system design: Case studies, user studies and empirical evaluation
  5. Mathematical perspective on programming: Formal models of programming languages
  6. Proofs about programming languages: Types and properties of functional languages