Fundamentals of Oop and Data Structures in Java by Richard Wiener & Lewis J. Pinson