Module 06-30190 (2019)
Functional Programming
Level 2/I
Martin Escardo Noam Zeilberger | Semester 1 | 20 credits |
Co-ordinator: Noam Zeilberger
Reviewer: Martin Escardo
The Module Description is a strict subset of this Syllabus Page.
Outline
This module builds on the Logic and Computation module, developing practical programming skills in a typed functional programming language. It will strengthen the algorithmic and design skills of the students within the functional framework, and will introduce them to some advanced programming language features.
Aims
The aims of this module are to:
- Present the basic ideas of functional programming languages
- Demonstrate the main elements of good functional programming style.
- Illustrate some of the uses and applications of functional programming.
- Introduce more advanced features of typed functional programming.
Learning Outcomes
On successful completion of this module, the student should be able to:
- Demonstrate practical understanding of a wide range of recursive types
- Demonstrate practical understanding of infinite data structures
- Demonstrate practical understanding of lazy programming
- Understand, manage and use effects
- Understand and use higher-order functions
- Write functional programs using advanced features such as type classes and monads
Restrictions
None.
Pre-requisites
- 06-30180 - Logic and Computation
Teaching methods
Provided via lectures, workshops, and guided independent study.
Contact hours: Total: 200 hours, Lecture 33 hours, Workshops: 22 hours, Guided independent study: 145 hours.
Assessment
Assessments: 2hr Examination (80%), Continuous Assessment (20%) Reassessment: 2hr Examination (100%)
Programmes containing this module
- BSc Artificial Intelligence & Computer Science [0144]
- BSc Artificial Intelligence & Computer Science with an Industrial Year [9502]
- BSc Artificial Intelligence & Computer Science with Study Abroad [452B]
- BSc Computer Science [4436]
- BSc Computer Science with an Industrial Year [9499]
- BSc Computer Science with Digital Technology Partnership [610C]
- BSc Computer Science with Digital Technology Partnership [893C]
- BSc Computer Science with Study Abroad [5571]
- BSc Mathematics and Computer Science [5196]
- BSc Mathematics and Computer Science with an Industrial Year [9495]
- MEng Computer Science/Software Engineering [4754]
- MEng Computer Science/Software Engineering with an Industrial Year [9501]
- MSci Computer Science [4443]
- MSci Computer Science with an Industrial Year [9509]
- MSci Computer Science with Study Abroad [5576]
- MSci Mathematics and Computer Science [5197]
- MSci Mathematics and Computer Science with an Industrial Year [9496]