Coursera: Algorithms Part - I, by: Robert Sedgewick and Kevin Wayne