Java Foundations: Introduction to Program Design and Data Structures - Lewis, John; DePasquale, Peter; Chase, Joseph