Module and Programme Catalogue

Search site

Find information on

This module is not currently running in the selected year. The information shown below is for the academic year that the module was last running in, prior to the year selected.

2016/17 Undergraduate Module Catalogue

COMP3941 Functional Programming

10 creditsClass Size: 40

Module manager: Prof David Duke

Taught: Semester 1 (Sep to Jan) View Timetable

Year running 2016/17

Pre-requisite qualifications

None, but students would benefit with familiarity with the following concepts from discrete mathematics / programming foundations: types, tuples, (mathematical) functions, recursion, induction.

This module is mutually exclusive with

COMP5941MFunctional Programming

This module is not approved as a discovery module

Module summary

* foundations: the lambda calculus, redexes, evaluation order* basic concepts: functional abstractions and applications* simple and compound types* user-defined inductive data types and type classes* function definition* higher-order functions* higher-order types and Haskell type classes including Monad and Applicative* tools for Haskell development including modules and Cabal


This module examines the paradigm of programming with (pure) functions in software development, focussing on the Haskell language and its implementation technology. Similar concepts underpin other modern languages, including ML, Scala, JavaScript and Clojure. Indeed, concepts from functional programming are now found in C++. Functional programmers are in demand by industry: Haskell for example has been adopted by major companies (e.g. Facebook, and a number of banks) and is used by a range of specialist software developers in applications from web development to secure languages for programming embedded devices. In research, functional languages are the major laboratories for innovation in programming technologies including type theory, parallelism, software correctness, and security.

Learning outcomes
The module will:
* review the formal foundations of functional programming;
* equip students with an understanding of the major concepts in modern functional programming, including inductive data types, equational definitions, higher-order functions and higher-order types;
* introduce students to advanced features specific to the Haskell language, including the monad, applicative, and traversable type classes, and support for parallel programming;
* provide practical experience of software development in a pure functional language.

Skills outcomes
* rigorous use of software tools (repositories, testing, documentation)
* professional software development


Students will understand the foundations of functional programming, and be able to write programs using basic to intermediate features of the Haskell language. The level of foundational knowledge will allow students to transfer insight into functional paradigm to programming in related languages. They will also have further exposure to the tool ecosystem that is essential to software development practice.

Teaching methods

Due to COVID-19, teaching and assessment activities are being kept under review - see module enrolment pages for information

Delivery typeNumberLength hoursStudent hours
Practical Demonstration201.0020.00
Class tests, exams and assessment11.0030.00
Private study hours35.00
Total Contact hours65.00
Total hours (100hr per 10 credits)100.00

Opportunities for Formative Feedback

Weekly practical classes will provide rapid feedback on students’ ability to deploy the new concepts covered in that week. Although lectures will include presentation of some concept, a significant proportion of each “lecture” session will be critical discussion, again providing further insight into level of understanding. These sessions will also include short MCQs as formative assessment.

Methods of assessment

Due to COVID-19, teaching and assessment activities are being kept under review - see module enrolment pages for information

Assessment typeNotes% of formal assessment
AssignmentProgramming task20.00
AssignmentProgramming task30.00
Total percentage (Assessment Coursework)50.00

This module is re-assessed by Lab exam only.

Exam typeExam duration% of formal assessment
Unseen exam 3 hr 00 mins50.00
Total percentage (Assessment Exams)50.00

This module is re-assessed by Lab exam only.

Reading list

The reading list is available from the Library website

Last updated: 15/03/2017


Browse Other Catalogues

Errors, omissions, failed links etc should be notified to the Catalogue Team.PROD

© Copyright Leeds 2019