Programming Languages: Applications and Design - COMP6630

Looking for a different module?

Module delivery information

Location Term Level1 Credits (ECTS)2 Current Convenor3 2024 to 2025
Autumn Term 6 15 (7.5) Michael Vollmer checkmark-circle


This module shows students what trade-offs are involved in designing a programming language, and how those trade-offs ultimately influence programmer productivity. The module starts with a quick, example-based introduction to the basics of programming languages. It then continues with a series of problems involved in the design of several programming languages.
As an example, the students will be shown the design difference between imperative languages with state and functional programming languages with types and general recursion. These will form the basis to construct more involved programming languages and realistic, e.g. non-determinism, polymorphism, effects and exceptions.
Also, they will be taught how to translate the mathematical description of a programming language into its corresponding implementation.
Indicative examples are:
- Implementation of interpreters for C-like and Haskell-like languages.
- Problem solving. The problems will involve concepts such as parsing, evaluation, trees, graphs, memoization, randomization.
- Adding Language features: first order functions, polymorphism, effects, exceptions, types, algebraic data types.


Contact hours

Total contact hours: 32 hours
Private study hours: 118 hours
Total study hours: 150 hours

Method of assessment

13.1 Main assessment methods

Programming Assignment (30%)
Participatory Exercises (15%)
Paper Presentation (25%)
Examination 2 hours (30%)

13.2 Reassessment methods
Like for like.

Indicative reading

Winskel, G. (1993) The Formal Semantics of Programming Languages: An Introduction. MIT Press
Bird, R., Gibbons J. (2020). Algorithm Design with Haskell. Cambridge University Press
Bird, R. (2014). Thinking Functionally with Haskell, Cambridge University Press.
Hutton, G. (2016) Programming in Haskell, 2nd edition. Cambridge University Press
Krishnamurthi, S. (2015) [available for free online]. Programming Languages: Application and Interpretation.
Streicher, T. (2006) Domain-Theoretic Foundations of Functional Programming. World Scientific Publishing Company

See the library reading list for this module (Canterbury)

Learning outcomes

The intended subject specific learning outcomes.
On successfully completing the module students will be able to:
1. Describe the behaviour of programs written in a small imperative and functional programming language using operational semantics
2. Translate these ideas from theory to practice by implementing an interpreter for the language
3. Adding basic features to a base language.
4. Writing algorithms using imperative (while loops) and functional (recursive operators) languages.


  1. Credit level 6. Higher level module usually taken in Stage 3 of an undergraduate degree.
  2. ECTS credits are recognised throughout the EU and allow you to transfer credit easily from one university to another.
  3. The named convenor is the convenor for the current academic session.
Back to top

University of Kent makes every effort to ensure that module information is accurate for the relevant academic session and to provide educational services as described. However, courses, services and other matters may be subject to change. Please read our full disclaimer.