School of Computing and Mathematics

Faculty of Natural Sciences

For academic year: 2023/24 Last Updated: 13 February 2024

CSC-10064 - Introduction to Algorithms

None

None

None

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.

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.

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.

Apply appropriate techniques to systematically decompose a complex problem into smaller parts which can then be directly solved: 1

Produce pseudocode or algorithm descriptions to solve simple computational problems: 1

Derive the computational complexity of simple algorithms and define simple complexity classes: 1

Explain the notion of universal machines and undecidability: 1

Produce pseudocode or algorithm descriptions to solve simple computational problems: 1

Derive the computational complexity of simple algorithms and define simple complexity classes: 1

Explain the notion of universal machines and undecidability: 1

22 hours of lectures

11 hours of tutorials (working in small groups on tutorial sheets)

An 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; 37 hours of background reading on the subject; and two hours for the exam.

11 hours of tutorials (working in small groups on tutorial sheets)

An 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; 37 hours of background reading on the subject; and two hours for the exam.

None

Examination

A two-hour unseen examination covering all module ILOs. There will be four questions, broken down into subquestions.