The module introduces students to fundamental concepts underpinning programming languages and to reasoning about program behaviour.
By the end of the module the student should be able to:
- Understand a variety of concepts underpinning modern programming languages.
- Distinguish type disciplines in various programming languages.
Use formal semantics to reason aboutprogram behaviour.
Implement program interpreters and type inference algorithms.
Scope and binding, untyped programming, type systems, type inference, evaluation relations, higher-order types, references, control operators, subtyping, recursive types, polymorphism.