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:

  1. Express a problem solution algorithmically using pseudocode 
  2. Analyse the time complexity of an algorithm
  3. Construct computer programs to implement algorithms
  4. 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

https://walkccc.me/CLRS