Resources

Textbooks



Visualization of data structures

Online courses (videos)

LECTURES

  1. course introduction, Official Course Outline (slides)

Data Structures

  1. balanced search trees (slides)
    rotations, AVL trees, 2-3 trees
  2. hashing (slides)
    hash functions & authentication, closed hash tables: linear vs. quadratic probing
  3. heaps (slides)
    building a heap in O(n log n) vs. O(n), indexed heaps for changing priorities
  4. disjoint-sets and union/find (PDF)
    equivalence relations, union by size/height, path compression

Graph algorithms

  1. directed graphs (PDF)
    strongly connected components (SCC), directed acyclic graphs (DAG), topological orderings
  2. single source shortest paths (PDF)
  3. graphs with positive edge weights, Dijkstra's algorithm
  4. minimum spanning trees (PDF)
    cut property, Prim and Kruskal's algorithms
  5. bipartite graphs (PDF)
    matching, stable marriages (Gale-Shapley)
  6. network flows 1 (PDF)
    flow networks, flows, residual graphs, augmenting paths, Ford-Fulkerson
  7. network flows 2 (PDF)
    max flow = min cut, finding maximal match in bipartite graphs

Dynamic Programming

  1. interval scheduling (PDF)
    greedy approaches, weighted interval scheduling, DP and memoization
  2. segmented least squares (PDF)
  3. sum of subsets, knapsack (PDF)
  4. shortest paths in a graph with negative weights (PDF) (B-F code in Python)
    Bellman-Ford, Floyd-Warshall

Divide and Conquer

  1. mergesort (review), closest pair of points in 2D (PDF)
  2. Karatsuba multiplication, Master method (PDF)
  3. determininistic quicksort and select, median-of-median-of-5's (PDF)

Probability and information theory

  1. what do we mean by "average case"? (PDF)
    amortization, discrete probability: random variables, linearity of expectation
  2. randomized quicksort and select (PDF)
    expected runtimes
  3. lower bounds for comparison sorting, sorting in linear time (PDF)
    decision trees, counting sort, bucket sort, more probability: independence
  4. data compression (PDF)
    optimal prefix codes, Huffman coding, run length coding

EXERCISES, EXAMS, etc





Exercises: balanced search trees

Exercises: hashing, hashtables
Exercises: heaps and priority queues
Exercises: disjoint sets, union-find







Exercises: SCCs, DAGs
Exercises: Dijkstra's algorithm



Exercises: Minimal spanning trees

Midterm 1 exam and solutions

Exercises: Bipartite graphs
Exercises: Network flows 1
Exercises: Network flows 2




Exercises: Interval scheduling
Exercises: Segmented least squares
Exercises: Subset sum and knapsack
Exercises: Bellman-Ford, Floyd-Warshall


Midterm 2 exam and solutions

Exercises: closest pair of points
Exercises: master method
Exercises: selection





Exercises: average case
Exercises: randomized select
Exercises: lower bounds and linear sorting
Exercises: data compression

(final exam) & (solutions)