A Concise and Practical Introduction to Programming Algorithms in Java - Nielsen, Frank (Springer London, 2009)