Coursera course offered by Standford University
Course Topics Part I
Vocabulary for design and analysis of algorithms E.g., "Big-Oh" notation; "sweet spot" for high-level reasoning about algorithms
Divide and conquer algorithm design paradigm Apply to: Integer multiplication, sorting, matrix multiplication, closet pair General analysis methods("Master method/Theorem")
Randomization in algorithm design Apply to: QuickSort, primality testing, graph partitioning, hashing
Primitives for reasoning about graphs Connectivity information, shortest paths, structure of information and social networks
Use and implementation of data structures Heaps, Balanced binary search trees, hashing and some variants(e.g., bloom filters)
Course Topics Part II
Greedy algorithm design paradigm
Dynamic programming algorithm design paradigm
NP-complete problems and what to do about them
Fast heuristics with provable guarantees
Fast exact algorithms for special cases
Exact algorithms that beat brute-force search