Business and technology qualifications, Levels 3-6, in Brussels. Explore qualifications
Portal login

Algorithms and Data Structures

CYB404

Course CodeCYB404
ECTS

Course Description

This module introduces data structures, algorithms, and the principles of computational complexity. Learners will become familiar with a variety of data structures and understand their similarities and differences. Both linear data structures such as arrays and lists, and non-linear data structures including graphs and trees, will be introduced. Time and space complexity, including notation for and analysis of complexity, are introduced as core considerations for algorithmic design. A range of popular sort, search, and pathfinding algorithms are introduced. Learners will gain practical experience in writing pseudocode for algorithms and using this to write, test, and debug programmed implementations of algorithms.

Course Objectives

This module introduces data structures, algorithms, and the principles of computational complexity. Learners will become familiar with a variety of data structures and understand their similarities and differences. Both linear data structures such as arrays and lists, and non-linear data structures including graphs and trees, will be introduced. Time and space complexity, including notation for and analysis of complexity, are introduced as core considerations for algorithmic design. A range of popular sort, search, and pathfinding algorithms are introduced. Learners will gain practical experience in writing pseudocode for algorithms and using this to write, test, and debug programmed implementations of algorithms.

Key Topics

  1. LO1: Understand a range of essential data structures.
  2. LO2: Understand algorithmic complexity and appreciate its importance.
  3. LO3: Understand a range of algorithmic techniques.
  4. LO4: Be able to write algorithms in popular programming languages.

Course Outline

Learning Outcomes

  1. LO1 Understand a range of essential data structures.
  2. 1.1 Describe a data structure.
  3. 1.2 Explain a range of linear and non-linear data structures.
  4. 1.3 Analyse the impact of the choice of data structure on algorithmic performance.
  5. LO2 Understand algorithmic complexity and appreciate its importance.
  6. 2.1 Demonstrate an ability to write Big O and little o notation to describe algorithmic complexity.
  7. 2.2 Explain the impact of algorithmic design choice on computational complexity for a variety of examples.
  8. 2.3 Explain the difference between P and NP.
  9. 2.4 Evaluate open problems in problem classification and the impacts of future technologies on the difficulty in solving different classes algorithms.
  10. LO3 Understand a range of algorithmic techniques.
  11. 3.1 Use recursion and memoisation as tools to design solutions to problems.
  12. 3.2 Describe a range of sort, search, and pathfinding algorithms.
  13. 3.3 Explain the trade-off between memory and computational complexity in algorithmic design.
  14. 3.4 Critically analyse algorithmic paradigms such as the greedy approach and divide and conquer approach.
  15. 3.5 Evaluate sort, search, and pathfinding algorithms in terms of their space and time complexity.
  16. LO4 Be able to write algorithms in popular programming languages.
  17. 4.1 Explain how to write pseudo-code for algorithmic design.
  18. 4.2 Implement pseudocode in a programming language.
  19. 4.3 Evaluate the correctness and speed of an algorithm.
  20. 4.4 Use debugging to correct errors in algorithmic implementation.
Scroll