Module 02552 (2005)
Syllabus page 2005/2006
06-02552
Principles of Programming Languages
Level 3/H
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
Outline
The module explains some fundamental principles of programming languages, such as stack, environment, store and type. We do this for a toy language called "call-by-push-value", in which we represent various familiar programming idioms. We see how the meaning of language features can be described precisely using "abstract machines".
Aims
The aims of this module are to:
- motivate and introduce some building blocks from which advanced programming languages can be constructed
- describe the meaning of these by saying how they can be implemented in principle
- use these to explicate Java-like idioms such as objects and classes
- use a machine to clarify notions such as "the stack", "the environment", "the store" that students may have met informally
- explain how we check the type of a program
Learning Outcomes
| On successful completion of this module, the student should be able to: | Assessed by: | |
| 1 | recognize and appreciate fundamental concepts in programming languages | Examination and continuous assessment |
| 2 | write and understand simple programs using fine-grained primitives | Examination and continuous assessment |
| 3 | write operational semantics for a small programming language | Examination and continuous assessment |
| 4 | explain the meaning and behaviour of programs in a precise and rigorous way | Examination and continuous assessment |
| 5 | recognize and derive types | Examination and continuous assessment |
Restrictions, Prerequisites and Corequisites
Restrictions:
None
Prerequisites:
None
Co-requisites:
None
However there are some connections to
06-05934 (Models of Computation)
and
06-02578 (Compilers & Languages)
.
Teaching
Teaching Methods:
2 hrs lectures per week
Contact Hours:
Assessment
- Supplementary (where allowed): As the sessional assessment
- 1.5 hr examination (80%) and continuous assessment (20%). Resit (where allowed) by examination only.
Recommended Books
| Title | Author(s) | Publisher, Date |
| Essentials of Programming Languages (2nd edition) | Friedman, D P, Wand, M & Haynes, C T | 2001 |
| Structure and Interpretation of Computer Programs (2nd edition) | Abelson, H & Sussman, G | 1997 |
Detailed Syllabus
-
Call-by-push-value basics
- Returning
- Binding
- Data and pattern-matching
- Sequencing
- Thunks
- Parameter passing
- Programming side-effecting expressions in CBPV
- Stack machine
- Substitution
- Combining a call stack and a data stack
- Types
- Typechecking arithmetic expressions
- Contexts and binding
- Higher-order types
- Storage
- Storage cells and ref types
- Programming objects and classes (without inheritance) in CBPV
- Observational Equivalence
- Revision
Last updated: 13 May 2005
Source file: /internal/modules/COMSCI/2005/xml/02552.xml
Links | Outline | Aims | Outcomes | Prerequisites | Teaching | Assessment | Books | Detailed Syllabus