School of Computer Science

Module 06-28344 (2015)

Elements of Functional Computing

Level 1/C

Dan Ghica Semester 1 10 credits
Co-ordinator: Dan Ghica
Reviewer: Martin Escardo

The Module Description is a strict subset of this Syllabus Page.


The module will introduce the fundamental data structures of functional computing and recursive algorithms over inductively defined data types. Students will learn how to program in a declarative, side-effects-free style. Students will be introduced to complexity analysis and functional optimisation techniques such as tail recursion. Students will also be exposed to the basics of symbolic evaluation and structural induction as a means to prove properties of functional programs. The ideas will be presented both abstractly and concretely via a suitably chosen functional programming language.


The aims of this module are to:


Learning Outcomes

On successful completion of this module, the student should be able to:

  1. demonstrate understanding of the principles of functional programming
  2. demonstrate understanding of functional models of data and computation
  3. make informed choices between alternative ways of implementation, justifying choices on grounds such as time and space complexity, or considerations of numerical accuracy and correctness
  4. explain and apply inductive data structures together with their internal representations and relevant algorithms
  5. select, with justification, appropriate data structures to ensure efficient implementation of an algorithm
  6. argue that algorithms are correct, and derive their complexity
  7. select, with justification, appropriate algorithms for basic tasks such as searching



Teaching methods

2 hrs lecture, 1 hr exercise class per week

Contact Hours:



Sessional: 2 hr examination (80%), continuous assessment (20%).

Supplementary (where allowed): By examination only.

Detailed Syllabus

Not Applicable

Programmes containing this module