Module 06-25344 (2012)
|Martin Escardo||Semester 1||10 credits|
Co-ordinator: Martin Escardo
Reviewer: Robert Hendley
The Module Description is a strict subset of this Syllabus Page.
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.
- Sessional: 1.5 hr examination (80%), coursework (20%).
- Supplementary: 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.