CS 258. Introduction to Programming Language Theory
- Functional programming and typed lambda calculus (Chapter 2)
- Boolean, natural number, pairing and function expressions; definition of recursive functions using fixed-point operator (Section 2.2)
- Comparison of axiomatic, operational and denotational semantics (Section 2.3)
- Properties of reduction; deterministic symbolic interpreters (Section 2.4)
- Programming techniques, expressive power, limitations (Section 2.5)
- Universal algebra and algebraic data types (Chapter 3)
- Algebraic terms, equations and algebras (Sections 3.1-3)
- Equational proof system, soundness and completeness (Section 3.4)
- Homomorphisms and initiality (Section 3.5)
- Aspects of algebraic theory of data types (Section 3.6)
- Semantics of typed lambda calculus and recursion (Parts of Chapters 4 and 5)
- Presentation of context-sensitive syntax by typing rules (Sections 4.3.1, 4.3.2, 4.3.5)
- General models, summary of soundness and completeness (Sections 4.5.1-4)
- Domain-theoretic models of typed lambda calculus with fixed-point operators (Sections
5.1 and 5.2; Sections 5.3 and 5.4 time permitting)
- Imperative programs (Chapter 6)
- Syntax of while programs; L-values and R-values (Section 6.2)
- Structured operational semantics (Section 6.3)
- Denotational semantics using typed lambda calculus with location and store types, fixed-
point operator (Section 6.4)
- Partial correctness assertions. Soundness, relative completeness and example proofs
(Section 6.5).