Module 02552 (2013)

Module Description - Principles of Programming Languages

The Module Description is a strict subset of the Syllabus Page, which gives more information

Module TitlePrinciples of Programming Languages
SchoolComputer Science
Module Code06-02552
DescriptorCOMP/06-02552/LH
Member of StaffUday Reddy
LevelH
Credits10
Semester1
Pre-requisites06-05934 (Models of Computation), or equivalent
Co-requisitesNone, but 06-02578 (Compilers & Languages) will be an ideal complement
RestrictionsNone
Contact hours34
Delivery2 hrs of lectures and one exercise class per week, one revision lecture
Description 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.
Outcomes
On successful completion of this module, the student should be able to:Assessed by:
demonstrate fluency in reading, constructing, and manipulating expressions in the lambda calculusExamination, Continuous Assessment
execute specific evaluation strategies for lambda calculi with effectsExamination, Continuous Assessment
relate features of concrete programming languages to abstract principlesExamination, Continuous Assessment
assign types from various type disciplines to program expressionsExamination and Continuous Assessment
AssessmentSessional: 1.5 hr examination (80%), continuous assessment (20%)
Supplementary (where allowed): 1.5hr examination only
TextsMichael J. C. Gordon, Programming Language Theory and its Implementation, 1988
John C. Mitchell, Concepts in Programming Languages, 2002
Friedman, D P, Wand, M & Haynes, C T, Essentials of Programming Languages (2nd edition), 2001
Benjamin C. Pierce, Types and Programming Languages, 2002
David A Schmidt, The Structure of Typed Programming Languages, 1995