Coursera, Stanford, Algorithms: Design and Analysis, Part 1