Module description
Aims and Learning Outcomes
This module aims to provide the students with extensive practical experience of programming; to draw on, integrate, and build upon the theoretical and practical teaching of other modules in the programme. The module also covers professional issues in Computer Science.
On successful completion of this module, students will:
Be able to:
- demonstrate understanding of a broad range of concepts of programming in both imperative and non-imperative paradigms,
- demonstrate and apply their acquired knowledge of programming in these paradigms,
- evaluate critically their work,
- use programming tools effectively,
- demonstrate understanding and appreciation of professional issues in computer science
Syllabus
An indication of the type of topics:
- Imperative/object-oriented programming concepts
- Virtualisation, dynamic dispatch and design patterns
- Abstraction and generic programming;
- Templates and template meta-programming
- Memory management and smart pointers
- Non-imperative programming concepts
- Recursive definitions of algorithms
- Lambda functions and higher-order functions
- Logic programming
C++ is used as the basis for this module; with additional use of other languages (e.g. Haskell, Scala, Prolog) to clarify and illustrate other points as appropriate.
Assessment details
Please note: The below assessment details for the 2024/25 academic year may be updated. The confirmed details will be available on the Student Handbook and on the module KEATS page at the beginning of the semester.
Programming assignments
- 50% coursework 1
- 50% Coursework 2