Module 06-02552 (2011)
Principles of Programming Languages
Level 3/H
Hayo Thielecke Achim Jung | Semester 2 | 10 credits |
Co-ordinator: Achim Jung
Reviewer: Peter Breuer
The Module Description is a strict subset of this Syllabus Page.
Aims
The aims of this module are to:
- introduce the central ideas and techniques in the theory of programming languages
- exhibit some of the building blocks from which high-level programming languages are constructed
- illustrate how concrete languages realise abstract programming language ideas
- explain ways for defining the semantics of programming language constructs in a rigorous fashion
Learning Outcomes
On successful completion of this module, the student should be able to:
- demonstrate fluency in reading, constructing, and manipulating expressions in the lambda calculus
- execute specific evaluation strategies for lambda calculi with effects
- relate features of concrete programming languages to abstract principles
- assign types from various type disciplines to program expressions
Teaching methods
2 hrs of lectures and one exercise class per week, two revision lectures
Assessment
- Sessional: 1.5 hr examination (80%) and continuous assessment (20%).
- Supplementary: By examination only.
Detailed Syllabus
- History and overview
- The lambda calculus
- abstraction and application
- alpha equivalence
- substitution
- reduction
- Evaluation strategies
- Call-by-name, call-by-value, call-by-need
- Operational semantics
- Abstract machines
- effects
- Types
- simple types
- polymorphic types
- subtyping
- Modularity
- data encapsulation
- object-orientation
- abstract data types
Programmes containing this module
- BSc Computer Science [4436]
- BSc Computer Science with an Industrial Year [9499]
- BSc Computer Science with Study Abroad [5571]
- MEng Computer Science/Software Engineering [4754]
- MEng Computer Science/Software Engineering with an Industrial Year [9501]
- MSc Computer Science [0008]
- MSc Computer Security [6583]