Module 2 | Complexity, Recursive Programming, Arborescent data structures, Basic algorithms, Invariants and proof of correctness

Objective

By the end of this module, students will be able to:

  • Use (and explain) spatial and temporal complexity concepts, along with the mathematical tools used to describe them (big-Oh/Omega/Theta notations and definitions).
  • Analyse complex algorithm and derive their complexity
  • Code a binary search
  • Code the merge sort algorithm
  • Explain the RAM model
  • Use recursive programming
  • Use arborescent data structures (trees, lists, …)
  • Use invariants to show both correctness and complexity of an algorithm