Introduction to programming in Java an interdisplinary approach - Sedgewick (Pearson/Addison Wesley, 2006)