Algorithms and Data Structures
The aim of this module is to provide students with techniques for using some algorithms and their associated data structures. This includes the concept of computational thinking; the theoretical underpinnings of Computer Science; programming including data types, control structures, methods, inheritance, arrays, graphics and the mechanics of running and testing; algorithms, their complexity and implementation in programs; the application of these ideas in a practical context.
Module learning outcomes
Upon the completion of the module, a student should be able to:
- Express a problem solution algorithmically using pseudocode
- Analyse the time complexity of an algorithm
- Construct computer programs to implement algorithms
- Test a computer program against the specification.
Core Texts

Introduction to Algorithms
Cormen et al
MIT Press, 2009

Java in two semesters, 4th edition
Quentin Charatan & Aaron Kans
Springer, 2019
Weekly Units
Java building blocks: data types, expressions and controls
Methods classes and collection
Inheritance, graphics and packages
Pseudo-code, algorithm analysis and linear data structures
Sorting algorithms
Hash tables, trees and tree algorithms
Priority queues, Huffman trees and graphs