Module overview
This module aims to introduce students to recursion and to the principles of recursive, applicative and functional programming. In it, they will use various functional abstractions to control the complexity of programming, and will use abstraction mechanisms in programming. They will also study the principles of program evaluation and explore the evaluation mechanism.
Aims and Objectives
Learning Outcomes
Knowledge and Understanding
Having successfully completed this module, you will be able to demonstrate knowledge and understanding of:
- The principles of evaluation of programming languages
- The key mechanisms underpinning the functional programming model
Subject Specific Intellectual and Research Skills
Having successfully completed this module you will be able to:
- Discuss and perform the decomposition of problems using procedural, data and metalinguistic abstractions
- Write programs in a functional style
- Reason about evaluation mechanisms
Syllabus
Recursive Techniques
- recursion on numbers, lists, and trees.
Procedural Abstraction:
- Procedures as arguments
- Procedures as return values
Objects:
- Structures
- Closures
- Streams and delayed evaluation
Metalinguistic Abstraction
Environment model:
- Evaluation
- Interpreters
- Functional programming techniques in object oriented languages
Learning and Teaching
Teaching and learning methods
The content of this module is delivered through lectures, the module website, directed reading and pre-recorded materials.
Students work on their understanding through a combination of independent study and preparation for timetabled activities, along with formative assessments in the form of coursework assignments.
Students work on their practical skills and technical understanding in technical laboratories.
Type | Hours |
---|---|
Lecture | 36 |
Follow-up work | 18 |
Completion of assessment task | 38 |
Preparation for scheduled sessions | 10 |
Wider reading or practice | 50 |
Revision | 8 |
Specialist Laboratory | 20 |
Total study time | 180 |
Resources & Reading list
Textbooks
Graham Hutton (2016). Programming in Haskell. Cambridge University Press.
Assessment
Assessment strategy
This module is assessed by a combination of coursework, assessed laboratories and a final assessment in the form of a computer aided examination.Summative
This is how we’ll formally assess what you have learned in this module.
Method | Percentage contribution |
---|---|
Laboratory Exercises | 20% |
Examination | 40% |
Coursework | 40% |