Week 3 of Algorithms, Part 1 from Princeton University in Coursera