This module is offered in 2023-24.


  • To enhance the student’s understanding of programming techniques by exposing them to different ways of thinking about computer programming.

Learning Outcomes

On successful completion of this module, the student should:

  • Understand the key issues involved in using a functional programming language.
  • Understand the key issues involved in using a dynamic programming language.
  • Understand how to apply functional/dynamic programming techniques in other language settings.
  • Have completed 3-4 substantial practical projects, split between the two languages, and undertaken in small teams.


  • Introduction to functional programming:
    • The Haskell language; types and classes; list comprehensions; recursive functions; higher-order functions; lazy evaluation; using the Haskell compilation system and other tools; inter-language working.
  • Introduction to dynamic/interpreted programming languages:
    • Introduction to working with Python; the basic principles of the Python language; basic data types, functions, and dealing with errors; file-oriented input/ouput; core data structures (lists, sets, tuples, dictionaries), some example uses (e.g. network programming, WWW programming, graphics programming).

Compulsory Elements

This module has the following compulsory elements in addition to those common to all sub-Honours modules (tutorials, mark of 4 in each assessment component).

  • Pass all pieces of coursework.
  • Actively participate in collaborative development.
  • Participate in demonstration sessions.

Module Coordinator

Back to top

Last Published: 14 Jun 2024.