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 via a meta-circular evaluator.
Linked modules
Pre-requisites: COMP1202 AND COMP1206
Aims and Objectives
Learning Outcomes
Subject Specific Intellectual and Research Skills
Having successfully completed this module you will be able to:
- Reason about evaluation mechanisms
- Understand the concept of functional programming and be able to write programs in this style.
- Discuss and perform the decomposition of problems using procedural, data and metalinguistic abstractions
Knowledge and Understanding
Having successfully completed this module, you will be able to demonstrate knowledge and understanding of:
- The key mechanisms underpinning the functional programming model
- The principles of evaluation of programming language
Subject Specific Practical Skills
Having successfully completed this module you will be able to:
- Evaluate programs step by step
- Program in a functional style
Syllabus
Recursive Techniques recursion on numbers, lists, trees, graphs.
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
Type | Hours |
---|---|
Preparation for scheduled sessions | 18 |
Follow-up work | 18 |
Lecture | 36 |
Tutorial | 12 |
Wider reading or practice | 27 |
Revision | 10 |
Completion of assessment task | 29 |
Total study time | 150 |
Resources & Reading list
Textbooks
Graham Hutton (2016). Programming in Haskell. Cambridge University Press.
Abelson H and Sussman GJ with Sussman J (1996). Structure and Interpretation of Computer Programs. MIT Press.
Assessment
Summative
This is how we’ll formally assess what you have learned in this module.
Method | Percentage contribution |
---|---|
Final Assessment | 40% |
Continuous Assessment | 60% |
Referral
This is how we’ll assess you if you don’t meet the criteria to pass this module.
Method | Percentage contribution |
---|---|
Set Task | 100% |
Repeat
An internal repeat is where you take all of your modules again, including any you passed. An external repeat is where you only re-take the modules you failed.
Method | Percentage contribution |
---|---|
Set Task | 100% |
Repeat Information
Repeat type: Internal & External