CS349 Principles of Programming Languages
CS349 15 CATS (7.5 ECTS) Term 2
Availability
Option - CS, CSE, CBS, DM
Prerequisites
None.
Academic Aims
The module introduces students to fundamental concepts underpinning programming languages and to reasoning about program behaviour.
Learning Outcomes
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.
Content
- Scope and binding, untyped programming, type systems, type inference, evaluation relations, higher-order types, references, control operators, subtyping, recursive types, polymorphism.
Books
- 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
Assessment
Two-hour examination (70%), coursework (30%)
Teaching
30 one-hour lectures plus 10 one-hour seminars