Stanford Algorithms Specialization
Specialization homepage https://www.coursera.org/specializations/algorithms
Courses
- Divide and Conquer, Sorting and Searching, and Randomized Algorithms
- Week 1 - Introduction; “big-oh” notation and asymptotic analysis.
- Week 2 - Divide-and-conquer basics; the master method for analyzing divide and conquer algorithms.
- Week 3 - The QuickSort algorithm and its analysis; probability review.
- Week 4 - Linear-time selection; graphs, cuts, and the contraction algorithm.
- Graph Search, Shortest Paths, and Data Structures
- Week 1 - Breadth-first and depth-first search; computing strong components; applications.
- Week 2 - Dijkstra’s shortest-path algorithm.
- Week 3 - Heaps; balanced binary search trees.
- Week 4 - Hashing; bloom filters.
- Greedy Algorithms, Minimum Spanning Trees, and Dynamic Programming
- Week 1 - Two motivating applications; selected review; introduction to greedy algorithms; a scheduling application; Prim’s MST algorithm.
- Week 2 - Kruskal’s MST algorithm and applications to clustering; advanced union-find (optional).
- Week 3 - Huffman codes; introduction to dynamic programming.
- Week 4 - Advanced dynamic programming: the knapsack problem, sequence alignment, and optimal binary search trees.
- Shortest Paths Revisited, NP-Complete Problems and What To Do About Them
- Week 1 - The Bellman-Ford algorithm; all-pairs shortest paths.
- Week 2 - NP-complete problems and exact algorithms for them.
- Week 3 - Approximation algorithms for NP-complete problems.
- Week 4 - Local search algorithms for NP-complete problems; the wider world of algorithms.