Introduction to Java Programming: Fundamentals First by Y. Daniel Liang
For courses in Java: Introduction to Programming and Object-Oriented Programming.
Using a fundamentals-first approach, Liang explores the concepts of problem-solving and object-oriented programming. Beginning programmers learn critical problem-solving techniques, then move on to grasp the key concepts of object-oriented and GUI programming using Java 5. Small, simple, and stimulating examples demonstrate concepts and techniques; longer examples are presented in case studies with discussions and line-by-line explanations.