• Introduction

    Order notation, recurrence relations, master's theorem 2 classes

  • Design Methodologies - 1 : Divide and Conquer

    Sorting, correctness via loop invaraint, matrix multiplication 2 classes

  • Order Statistics

    1 class

  • Integer Sorting

    bucket sort, counting sort 1 class

  • Review of probability, random variables, example distributions

    2 classes

  • Universal Hashing

    1 class

  • Design Methodologies 2 -- Dynamic Programming

    2 classes

  • Design Methodologies 3 -- Greedy Algorithms

    2 classes

  • Graph Algorithms - I

    Representation, DFS/BFS, topological sort 2 classes

  • Graph Algorithms - II

    Shortest paths, connections to matrix multiplication 2 classes

  • Graph Algorithms - III

    Spanning trees 1 class

  • Amortized analysis

    3 methods, Dynamic classes 2 classes

  • Advanced topics I

    2 classes

  • Advanced topics II

    2 classes