For MSc Students Only
Please note that you cannot take Formal Program Design and Procedural Programming - you may take only
one of these options. Familiarity with the ideas of Functional Programming is a prerequisite for the course.
Overview
This course applies lessons that have been learnt in Functional Programming to the design of
programs written in a procedural style. By studying a sequence of programming examples,
each a useful software tool in its own right, students learn to construct programs in a
systematic way, structuring them as a collection of modules with well-defined interfaces.
The course also deals with the translation of functional programs into procedural ones,
and introduces the idea of loop-invariants for understanding and reasoning
about loops.
The course concludes with the study of a larger programming
example, such as a graphical program for finding the best route for driving between
specified towns in the UK. Through lab exercises, students learn to create, debug and
maintain programs of a non-trivial but moderate size.
Learning Outcomes
After studying this course, undergraduates will be able to:
- Translate basic functional idioms into procedural ones.
- Design simple loops, using invariants to explain why they work correctly
- Use subroutines and modules to structure more complex programs.
- Design data structures using arrays, records and pointers.
- Understand the procedural implementation of some common algorithms.