Design & Analysis of Algorithms, Part 1 Coursera online course.