Learning Java Through Applications: A Graphical Approach
Learning Java Through Applications emphasizes Java's graphical capabilities and the ability to create graphical user interfaces. The book uses fifteen complete Java programs in order of increasing complexity, including geometric patterns, games, puzzles, number theory problems, and cryptography, to teach students the Java programming language and concepts.
Features of Java 5.0 are covered in detail, including enumerated types, "for-each" statements, generics, autoboxing, and static imports. Each chapter contains a capstone program that involves graphics and illustrates the language features introduced in that chapter. The specifications for the program are discussed first, followed by the code and its explanatory text emphasizing the programming techniques used. Because complete programs are included, programmers have the opportunity to explore the design choices involved. Additionally, UML diagrams are included when appropriate to help them understand the overall design of each example.

Review By: Cathy Bell
02/20/2006
Java has become the programming language taught to most beginning programmers at the academic level. "Learning Java Through Applications: A Graphical Approach" explains the various concepts of programming and offers applications, so the student sees the concepts in action through graphical output.
Each chapter has a summary, review questions, and programming projects to reinforce what is learned. Rather than begin with a discussion of the many components of Java programming, the book exposes the student gradually. First the component is explained thoroughly and simply, and then the reader can work with the code to better understand what he has learned. For example, primitive data types are introduced over the first six chapters--chapter one explains integers, chapter four explains characters, and chapter six handles the Boolean type. As each type is explained, it is incorporated in the programs.
Each chapter builds on what was covered in previous chapter, using the components as building blocks throughout the book. The author stresses the importance of incorporating good programming practices, including code reuse and consistency in style. The CD-ROM that accompanies the book contains the code for the program listings so the student can see the code, copy it, compile it, and make changes to see what effect they have on the code. Although the book assumes that the reader has no previous programming or Java knowledge, the author warns that the reader needs a certain level of mathematical knowledge to understand the various algorithms. (I had no problem keeping up with the algorithms used in the text, and I am not a math major.)
This book would be a great text for teaching Java. It stresses good programming practices, and the author encourages the reader to think like a programmer. When describing the role of the programmer, he notes that "to be able to design a solution given in English specification and translate that design into a programming language requires an ability to think both logically and precisely without making any assumptions.” Few of the programming books I ha''ve read help the student realize that coding requires both skill and discipline.
The book is easy to read, and the approach is conducive to learning. Rather than throwing a bunch of terms and concepts at you in the beginning and assuming you will retain all that new knowledge, the book gradually introduces and reinforces each concept. I have been through a few Java classes and still found myself having “Ah ha!” moments while reading this book, as it explained things in logical steps without overwhelming the reader with unfamiliar terms.