Module 06-25344 (2014)
|Martin Escardo||Semester 1||10 credits|
The purpose of this module is to present the basic ideas of functional programming, to demonstrate the main elements of good programming style and to illustrate some of its uses and applications.
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 an understanding of the main features and advantages of a functional language
- write programs and implement algorithms in a functional style
- use functional programming techniques to solve problems
- use higher-order and list-manipulating functions
- use various data types appropriately in the solution of problems
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: 100% Continuous Assessment (with 80-20 split and 3 class tests forming an internal hurdle.)
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 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