Module 06-25344 (2017)
|Martin Escardo||Semester 1||10 credits|
This module will develop practical programming skills in a modern 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.
The aims of this module are to:
- present the basic ideas of functional programming languages
- demonstrate the main elements of good programming style
- illustrate some of the uses and applications of functional programming
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
- demonstrate awareness of type system and modules
- 06-28344 - Elements of Functional Computing
Eleven two-hour weekly lectures plus eleven two-hour demonstrator-supervised laboratory sessions.
Contact Hours: 45 (22 hrs lectures, 22 hrs labs, 1 revision lecture)
Sessional: 50% Continuous Assessment and 50% Examination (CT) (The continuous assessment and exam will be internal hurdles, students must pass both in order to pass the module).
Supplementary (where allowed): By examination only (100%).
- Introduction: aims of the module; structure and organisation of the module; assessment; teaching methods; style of presentation; useful books.
- Functional language paradigm: uses; implementation; history; main features; advantages and disadvantages; languages (e.g., Lisp, ML, OCAML, Haskell);
- Fundamental ideas (higher-order functions, currying, uncurrying, function composition, recursion, local definitions); programming style; literate scripts; type systems.
- Numbers: basic operations, basic numerical types, numerical type classes.
- Lists: basic operations.
- Advanced features: e.g., modules; monads; interactive programs; lazy evaluation; proving properties possessed by programs.
Programmes containing this module
- BSc Artificial Intelligence & Computer Science 
- BSc Artificial Intelligence & Computer Science with an Industrial Year 
- BSc Artificial Intelligence & Computer Science with Study Abroad [452B]
- BSc Computer Science 
- BSc Computer Science with an Industrial Year 
- BSc Computer Science with Study Abroad 
- MEng Computer Science/Software Engineering 
- MEng Computer Science/Software Engineering with an Industrial Year 
- MSci Computer Science 
- MSci Computer Science with an Industrial Year 
- MSci Computer Science with Study Abroad