https://class.coursera.org/algs4partI-003/wiki/view?page=syllabus