CS 358. Topics in Programming Language Theory Spring, 1993 John Mitchell MW 12:50-2:05 MJH 352 This course will concentrate on proof techniques for programming languages, illustrated using typed lambda calculus. The main topics will be: 1. Models of typed languages based on recursive functions instead of domain theory; partial equivalence relation interpretation of types. 2. The technique of ``logical relations,'' which may be used to prove operational and denotational properties of typed programs. Overview of ``representation independence'' for programming languages. 3. Cartesian closed categories. Overview of Kripke models and some of their applications (e.g., models of storage allocation and local variables). 4. Semantics of recursively-defined types (data structures). Models of recursive types, polymorphism and subtyping. This quarter's topics will not overlap significantly with previous offerings of the course; the course may be repeated for credit. Prerequisites are some familiarity with lambda calculus and models (of lambda calculus or related systems). Either CS 258, a related course in proof theory, or sufficient individual study should be adequate. Reading: Notes will be distributed. Course requirements: there will be homework problems in the notes. There will also be term projects, consisting of a set of additional homework problems in some coherent area, independent investigation, and/or oral report.