The course will cover the following subjects:

  • Basic data structures and algorithms such as binary search, self-resizing arrays and linked lists

  • Big-O complexity and how to reason about it, in iterative and recursive programs

  • Sorting algorithms: O(n^2) (e.g. insertion sort, selection sort, bubblesort, quicksort), O(n log n) (e.g. mergesort, heapsort), O(n) (e.g. counting sort)

  • Data structure invariants; abstract data types

  • Hash tables

  • Binary heaps; heapsort

  • Binary search trees, balanced binary search trees (AVL trees, red-black trees), 2-3 trees

  • Graphs; Dijkstra’s algorithm; Prim’s algorithm

You can find the official syllabus here.