Principles of Programming Languages (Spring 26)

Course Info | Description | Grading | Schedule | References | Resources

Course Information

Lectures: TBD

Office Hours: TBD

Instructor: rainoftime

Teaching assistant: TBD

Course Description

This course explores the theoretical foundations of programming languages, focusing on language design principles, semantics, and type systems. Students will develop a deep understanding of how programming languages are defined and reasoned about formally. The course covers various semantic frameworks, lambda calculus, type systems, and modern language features.

Prerequisites: Basic knowledge of discrete mathematics, algorithms, and experience with at least one programming language. Prior exposure to functional programming is helpful but not required.

Grading

Schedule

Week Topic Description Readings
(S=SF, P=PFPL)
1 Introduction Course overview, history of programming languages, paradigms, and language design principles P: Ch. 1
2 Mathematical Foundations Sets, relations, functions, induction, logic S: Basics, P: Ch. 2
3 Operational Semantics Small-step and big-step semantics, evaluation contexts, abstract machines P: Ch. 3-4, S: Imp, Winskel: Ch. 2-4
4 Denotational Semantics Fixed points, compositionality, basic model theory P: Ch. 5, Winskel: Ch. 5-8
5 Axiomatic Semantics Hoare logic, weakest preconditions, basic proof theory S: Hoare Logic, P: Ch. 6, Winskel: Ch. 12
6 Lambda Calculus Untyped lambda calculus, alpha/beta/eta equivalence, Church encodings, evaluation strategies P: Ch. 8-9, S: LF
7 Simple Typed Lambda Calculus Strong normalizability, progress and preservatio P: Ch. 10-11, S: STLC
8 Midterm Exam Review and assessment of course material covered so far All previous readings
9 System F Parametric polymorphism, impredicativity, Reynolds abstraction theorem P: Ch. 18-19, S: Poly
10 Type Inference Hindley-Milner type system, unification, principal types P: Ch. 20, S: InferWithError
11 Refinement Types Liquid types, SMT solving, automated verification P: Ch. 30, Vazou et al. (2014)
12 Algebraic Effects (?) Effect systems, handlers, monads, delimited continuations Plotkin & Pretnar (2009)
13 Expression Problem Extensibility challenges, visitor pattern, type classes, object algebras Cook (1990), Oliveira & Cook (2012)
14 Gradual Typing Type dynamics, blame calculus, hybrid typing, optional typing, performance Siek & Taha (2006), P: Ch. 27
15 TBD TBD
16 Project Presentations & Review Final project presentations and comprehensive course review

References

Resources & Related Topics

Course Repository | PLFA | TAPL | Software Foundations | Tagless Final | Continuations | Lambda Calculus | Effects | Polymorphic Type Inference | Extensible Effects | Streams | Meta-programming