EE Department Intranet -
Close window CTRL+W

ELEC60015 High Level Programming

Lecturer(s): Dr Tom Clarke


The aims of this module are: To demonstrate to you the role of modern static type systems, sum and product data structures, immutable code, and higher order functions, in program design and analysis; To provide you with an appreciation of modularity and immutability as they apply to modern programming; To demonstrate to you the tools and techniques available to write and test large multiple-author programs.

Learning Outcomes

The approach taken is that of active learning in which students learn through structured coding and lectures are used to introduce, motivate, and reflect on self-learnt material. Periods within the lectures will be used for group discussion of coursework.

At the end of this module students will have the following competences:
Be able to write programs in the hybrid object-oriented and functional programming language F#;
To express simple algorithms in a transformational style using immutable operations.To write recursive and tail recursive implementations of iteration;
To use list, map, array collection types and associated library functions;
To analyse and debug type errors in F#;
Be able to analyse problems and design appropriate functional code;
To define appropriate data structures to represent problem domains;
To write immutable code and encapsulate mutable operations;
To split large problems into independent modules with controlled dependencies;
Be able to work within a group to design, implement and test a significant application in F#.


Programming without variables; Static Hindley-Milner polymorphic types and higher order functions; Lambda calculus and combinators; Tuples, lists, trees, maps; Map, reduce, fold; Pattern matching; sum and product types; Recursion versus loops; Garbage collection; Implementations; Railway programming; Monads. Mutability; Write-once semantics; Functional techniques in real-world programming; Functions as interfaces; Type checking; Types as program specifications; Richer than Hindley-Milner types.
Exam Duration: N/A
Exam contribution: 0%
Coursework contribution: 100%

Term: Spring

Closed or Open Book (end of year exam): N/A

Coursework Requirement:
         Coursework only module

Oral Exam Required (as final assessment): N/A

Prerequisite module(s): None required

Course Homepage:

Book List:
1.Expert F# 4.0 (Don Syme & Adam Granicz)
2.Programming F# 3.0 (Chris Smith)