Eigenpoll : Compare courses : Algorithms: Design and Analysis, Part 2 

Algorithms: Design and Analysis, Part 2
Tim Roughgarden

In this course you will learn several fundamental principles of advanced algorithm design: greedy algorithms and applications; dynamic programming and applications; NP-completeness and what it means for the algorithm designer; the design and analysis of heuristics; and more.

https://www.coursera.org/course/algo2