Accessibility statement

Software 3 - COM00025I

« Back to module search

  • Department: Computer Science
  • Module co-ordinator: Dr. Kofi Appiah
  • Credit value: 10 credits
  • Credit level: I
  • Academic year of delivery: 2020-21

Module summary

Functional programming with applications

Related modules

Co-requisite modules

  • None

Prohibited combinations

  • None

Module will run

Occurrence Teaching cycle
A Spring Term 2020-21 to Summer Term 2020-21

Module aims

This module teaches the basics and some advanced features of typed, lazy functional programming; illustrated with a variety of applications including implementing Domain Specific Languages by both deep & shallow embedding. 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 Lab Exam
N/A 100

Special assessment rules

None

Reassessment

Task Length % of module mark
Essay/coursework
Software 3 Lab Exam
N/A 100

Module feedback

Feedback is provided through work in practical sessions, and after the final assessment as per normal 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.