Pitched at the beginner, this text teaches how to design and implement high-quality software programs using Java. The authors emphasize problem solving by understanding the requirements, exploring options, and designing conceptually clean solutions. They also seek to demonstrate the Java features in realistic ways.