Added material from Stanford's Coursera Course, Analysis and Design of Algorithms