Coursera Stanford Algorithm Course: Divide and Conquer, Sorting and Searching, and Randomized Algorithms