Coursera: Algorithms Specialization Coursera specialization by Stanford University It includes four courses: 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, and Dynamic Programming Course 4: Shortest Paths Revisited, NP-Complete Problems and What To Do About Them