Algorithms-Stanford
Course 1: Divide and Conquer, Sorting and Searching, and Randomized Algorithms
Course 2: Graph Search, Shortest Paths, and Data Structures
Course 3: Greedy Algorithms, Minimum Spanning Trees, Dynamic Programming
Course 4: Shortest Paths Revisited, NP-Complete Problems and What To Do About Them
Supplemental Resources