Lectures
- course introduction,
Course Outline
(slides)
Data Structures
- balanced search trees
(slides)
(exercises)
rotations, AVL trees, 2-3 trees
- hashing
(slides)
(exercises)
hash functions & authentication, closed hash tables: linear vs. quadratic probing
- heaps
(slides)
(exercises)
building a heap in O(n log n) vs. O(n), indexed heaps for changing priorities
- disjoint-sets and union/find
(slides)
(exercises)
equivalence relations, union by size/height, path compression
Graph algorithms
- directed graphs
(slides)
SCCs, DAGs
strongly connected components (SCC), directed acyclic graphs (DAG), topological orderings
- single source shortest paths
(slides)
(exercises)
graphs with positive edge weights, Dijkstra's algorithm
- minimum spanning trees
(slides)
(exercises)
cut property, Prim and Kruskal's algorithms
- bipartite graphs
(slides)
(exercises)
matching, stable marriages (Gale-Shapley)
- network flows 1
(slides)
(exercises)
flow networks, flows, residual graphs, augmenting paths, Ford-Fulkerson
- network flows 2 (slides)
(exercises)
max flow = min cut, finding maximal match in bipartite graphs
Dynamic Programming
- interval scheduling
(slides)
Interval scheduling
greedy approaches, weighted interval scheduling, DP and memoization
- segmented least squares
(slides) (exercises)
- sum of subsets, knapsack
(slides)
(exercises)
- shortest paths in a graph with negative weights
(slides)
(exercises)
(B-F code in Python)
Bellman-Ford, Floyd-Warshall
Divide and Conquer
-
mergesort (review), closest pair of points in 2D
(slides)
(exercises)
- Karatsuba multiplication, Master method
(slides)
(exercises)
- determininistic quicksort and select, median-of-median-of-5's
(slides)
(exercises)
Probability and information theory
- what do we mean by "average case"?
(slides)
(exercises)
amortization, discrete probability: random variables, linearity of expectation
- randomized quicksort and select
(slides) (exercises)
expected runtimes
- lower bounds for comparison sorting, sorting in linear time
(slides)
(exercises)
decision trees, counting sort, bucket sort, more probability: independence
- data compression
(slides)
data compression
optimal prefix codes, Huffman coding, run length coding
|