Accessibility statement

Software 3: Functional Programming - COM00059H

« Back to module search

  • Department: Computer Science
  • Module co-ordinator: Dr. Rahul Ruttun
  • Credit value: 20 credits
  • Credit level: H
  • Academic year of delivery: 2024-25

Module summary

Functional programming

Related modules

Co-requisite modules

  • None

Prohibited combinations

  • None

Module will run

Occurrence Teaching period
A Semester 1 2024-25

Module aims

SOF3 teaches the basics and advanced features of typed, lazy functional programming, illustrated with a variety of applications, including implementing Domain Specific Languages by both deep and shallow embedding. This module also covers a range of functional-programming techniques, type classes, and testing tools.

Module learning outcomes

S301

Develop, understand and analyse non-trivial small-scale programs in a functional language such as Haskell, including reasoning about equality of simple expressions.

S302

Use the principal features of a TLFN (higher order functions, polymorphism, laziness, data types, type classes) to solve small but non-trivial, well-specified problems.

S303

Construct suitable data types and functions to manipulate Domain Specific Languages in a TLFN.

S304

Use available supporting tools for program development, analysis, testing and debugging, such as QuickCheck and SmallCheck

S305

Discuss the issues affecting the sequential implementation of lazy functional languages, including determining when sequentiality is needed and its implementation through monads.

S306

Explain the differences between declarative and imperative descriptions of computation.

Assessment

Task Length % of module mark
Essay/coursework
Software 3 Open Assessment
N/A 100

Special assessment rules

None

Reassessment

Task Length % of module mark
Essay/coursework
Software 3 Open Assessment
N/A 100

Module feedback

Feedback is provided verbally throughout the module via practical sessions/seminars, and after the summative assessment as per University guidelines.

Indicative reading

*** Graham Hutton, Programming in Haskell, CUP, 2007

* Bryan O'Sullivan, John Goerzen & Donald Stewart, Real World Haskell, O'Reilly Media, 2008

+ Jeremy Gibbons & Oege de Moor, The Fun of Programming, Palgrave, 2003

+ Christopher Okasaki, Purely Functional Data Structures, CUP, 2008



The information on this page is indicative of the module that is currently on offer. The University is constantly exploring ways to enhance and improve its degree programmes and therefore reserves the right to make variations to the content and method of delivery of modules, and to discontinue modules, if such action is reasonably considered to be necessary by the University. Where appropriate, the University will notify and consult with affected students in advance about any changes that are required in line with the University's policy on the Approval of Modifications to Existing Taught Programmes of Study.