Module 02552 (2011)

Syllabus page 2011/2012

06-02552
Principles of Programming Languages

Level 3/H

Achim Jung:5
Hayo Thielecke:5
10 credits in Semester 2

Links | Outline | Aims | Outcomes | Prerequisites | Teaching | Assessment | Books | Detailed Syllabus


The Module Description is a strict subset of this Syllabus Page. (The University module description has not yet been checked against the School's.)

Relevant Links

Module Web Page


Outline

It can be argued that the development and study of high-level programming languages is a central task for computer science research, and enormous progress has indeed been made from the machine-level coding of the 40s to today's functional and object-oriented languages. In this module, we will study the features that have emerged as recurring themes in high-level languages, though they are expressed in a variety of ways. We will use the lambda calculus as a meta language to express theses features concretely and precisely. At this level of abstraction, 'computation' becomes 'evaluation' of expressions, rather than the execution of machine instructions. We will look at ways to specify this process in a precise fashion and thus discover some key design decisions that have to be made when developing a concrete language. Types can be used to constrain the range of valid programs and thus help the programmer to develop well-structured code. We will see how polymorphism and subtyping extend the expressivity of simple type disciplines without sacrificing semantics.


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: Assessed by:
1demonstrate fluency in reading, constructing, and manipulating expressions in the lambda calculusExamination and continuous assessment
2execute specific evaluation strategies for lambda calculi with effectsExamination and continuous assessment
3relate features of concrete programming languages to abstract principlesExamination and continuous assessment
4assign types from various type disciplines to program expressionsExamination and continuous assessment

Restrictions, Prerequisites and Corequisites

Restrictions:

None

Prerequisites:

06-05934 (Models of Computation), or equivalent

Co-requisites:

None, but 06-02578 (Compilers & Languages) will be an ideal complement


Teaching

Teaching Methods:

2 hrs of lectures and one exercise class per week, two revision lectures

Contact Hours:

35


Assessment

  • Sessional: 1.5 hr examination (80%) and continuous assessment (20%).
  • Supplementary (where allowed): By examination only.

Recommended Books

TitleAuthor(s)Publisher, Date
Programming Language Theory and its ImplementationMichael J. C. GordonPrentice-Hall International, 1988
Concepts in Programming LanguagesJohn C. MitchellCambridge University Press, 2002
Essentials of Programming Languages (2nd edition)Friedman, D P, Wand, M & Haynes, C TMIT Press, 2001
Types and Programming LanguagesBenjamin C. PierceMIT Press, 2002
The Structure of Typed Programming LanguagesDavid A SchmidtMIT Press, 1995

Detailed Syllabus

  1. History and overview
  2. The lambda calculus
    • abstraction and application
    • alpha equivalence
    • substitution
    • reduction
  3. Evaluation strategies
    • Call-by-name, call-by-value, call-by-need
    • Operational semantics
    • Abstract machines
    • effects
  4. Types
    • simple types
    • polymorphic types
    • subtyping
  5. Modularity
    • data encapsulation
    • object-orientation
    • abstract data types

Last updated: 5 May 2009

Source file: /internal/modules/COMSCI/2011/xml/02552.xml

Links | Outline | Aims | Outcomes | Prerequisites | Teaching | Assessment | Books | Detailed Syllabus