Software 3: Functional Programming with Applications - COM00025I

«Back to module search

  • Department: Computer Science
  • Credit value: 10 credits
  • Credit level: I
  • Academic year of delivery: 2022-23

Module summary

Functional programming with applications

Related modules


Module will run

Occurrence Teaching period
A Spring Term 2022-23 to Summer Term 2022-23

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.

Indicative assessment

Task % of module mark
Online Exam -less than 24hrs (Centrally scheduled) 50
Online Exam -less than 24hrs (Centrally scheduled) 50

Special assessment rules

None

Indicative reassessment

Task % of module mark
Online Exam -less than 24hrs (Centrally scheduled) 50
Online Exam -less than 24hrs (Centrally scheduled) 50

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