CS349 15 CATS (7.5 ECTS) Term 2
Option - CS, CSE, CBS, DM
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.
- Benjamin C. Pierce, Types and Programming Languages, MIT Press, 2002
- John C. Mitchell, Concepts in Programming Languages, CUP, 2003
- Peter Sestoft, Programming Language Concepts, Springer, 2012
- Benjamin C. Pierce, Chris Casinghino, Marco Gaboardi, Michael Greenberg,Cătălin Hriţcu, Vilhelm Sjöberg, Brent Yorgey, Software Foundations, online edition, 2013
Two-hour examination (70%), coursework (30%)
30 one-hour lectures plus 10 one-hour seminars