Abstract:
In this book, we lead you on a journey into the fun and exciting world of computer programming. Throughout your journey, we’ll provide you with lots of problem-solving practice. After all, good programmers need
to be good problem solvers. We’ll show you how to implement your problem solutions with Java programs.
We provide a plethora of examples, some short and focused on a single concept, some longer and more “real
world.” We present the material in a conversational, easy-to-follow manner aimed at making your journey a
pleasant one. When you’re done with the book, you should be a profi cient Java programmer.
Our textbook targets a wide range of readers. Primarily, it targets students in a standard college-level
“Introduction to Programming” course or course sequence where no prerequisite programming experience
is assumed.
In addition to targeting students with no prerequisite programming experience, our textbook also targets industry practitioners and college-level students who have some programming experience and want to
learn Java. This second set of readers can skip the early chapters on general programming concepts and
focus on the features of Java that differ from the languages that they already know. In particular, since C++
and Java are so similar, readers with a C++ background should be able to cover the textbook in a single
three-credit-hour course. (But let us reiterate for those of you with no programming experience: You should
be fi ne. No prerequisite programming experience is required.)
Finally, our textbook targets high school students and readers outside of academia with no programming experience. This third set of readers should read the entire textbook at a pace determined on a caseby-case basis.
Textbook Cornerstone #1: Problem Solving
Being able to solve problems is a critical skill that all programmers must possess. We teach programmatic
problem solving by emphasizing two of its key elements—algorithm development and program design.
Emphasis on Algorithm Development
In Chapter 2, we immerse readers into algorithm development by using pseudocode for the algorithm examples instead of Java. In using pseudocode, students are able to work through non-trivial problems on
their own without getting bogged down in Java syntax—no need to worry about class headings, semicolons,
braces, and so on.1
Working through non-trivial problems enables students to gain an early appreciation fo