This module is about the design of programming languages. In particular it is concerned with the syntax, the semantics and usability of a programming language. The basics of lambda calculus, both untypes and simply typed, will be studied, with an eye towards its use in formalizing the semantics of programming languages. Working knowledge of three languages Scheme, Haskell, and Prolog) will be acquired. Semantics will be studied using both formal machinery and an interpreter-b...
Learning Outcomes
Read and write simple programs in Scheme, Haskell, and Prolog
Understand lambda calculus reductions, renaming, variable capture, and confluence
Understand the erasure theorem, the termination properties of both typed and untyped lambda calculus, and typing rules
Describe the syntax and semantics of Scheme, Haskell, Prolog, and lambda calculus