EE Department Intranet -
Close window CTRL+W

ELEC96019 (EE3-22) High Level Programming

Lecturer(s): Dr Tom Clarke


To demonstrate the role of modern static type systems, sum and product data structures, immutable code, and higher order functions, in program design and analysis

To give the student an appreciation of modularity and immutability as they apply to modern programming

To demonstrate the tools and techniques available to write and test large multiple-author programs

Learning Outcomes

(see the advert on the course web page for more details)

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
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)