Programme/Approved Electives for 2024/25
None
Available as a Free Standing Elective
No
This module allows students to acquire a set of problem solving techniques which can be used to break down complex problems from many real world scenarios and to solve them in an efficient way. The module differs from a standard programming modules since we will here not focus on a particular language, but instead consider solutions in a high level descriptive way, using pseudocode, so that solutions can then be derived in any programming language.Numerous real world problems will be considered, and we will see a variety of techniques that can be used to solve them. By gaining experience of these techniques, students will be able to apply them to new scenarios that they have not seen before.
Aims
This module introduces students to computational problem solving and demonstrates the concept of an algorithm described by pseudocode as a tool to solve clearly defined computational problems which is independent of a particular programming language. Techniques will be developed to break down a complex problem into smaller components and a variety of problem solving techniques will be acquired. Properties of algorithms will be studied.
Intended Learning Outcomes
Apply appropriate techniques to systematically decompose a complex problem into smaller parts which can then be directly solved: 1Produce pseudocode or algorithm descriptions to solve simple computational problems: 1Derive the computational complexity of simple algorithms and define simple complexity classes: 1Explain the notion of universal machines and undecidability: 1
22 hours of lectures11 hours of tutorials (working in small groups on tutorial sheets)2 hour examAn indicative breakdown of the 117 hours of private study would be 45 hours of revision of lecture slides and notes; 33 hours of preparation and revision of the tutorials and 37 hours of background reading on the subject.
Description of Module Assessment
1: Exam weighted 100%Examination