The module will introduce the fundamental data structures of functional computing and recursive algorithms over inductively defined data types. Students will learn how to program in a declarative, side-effects-free style. Students will be introduced to complexity analysis and functional optimisation techniques such as tail recursion. Students will also be exposed to the basics of symbolic evaluation and structural induction as a means to prove properties of functional programs. The ideas will be presented both abstractly and concretely via a suitably chosen functional programming language.
Learning Outcomes
By the end of the module students should be able to:
demonstrate a basic understanding of the principles of functional programming
demonstrate understanding of functional models of data and computation
solve algorithmic problems in a functional style
be aware of space and time complexity aspects of programs
be aware of numerical accuracy issues in programming
be proficient in solving algorithmic problems involving lists
Assessments: 2 hour examination (100%), continuous assessment (0%) will form an internal hurdle; this will not contribute to the overall module mark but must be passed.
Reassessment: 2 hour examination only