How to Think Like a Computer Scientist
Think Java is an introduction to computer science and programming intended for people with little or no experience. We start with the most basic concepts and are careful to define all terms when they are first used. The book presents each new idea in a logical progression. Larger topics, like recursion and object-oriented programming, are divided into smaller examples and introduced over the course of several chapters.
Here are the guiding principles that make the book the way it is:
- One concept at a time. We break down topics that give beginners trouble into a series of small steps, so that they can exercise each new concept in isolation before continuing.
- Balance of Java and concepts. The book is not primarily about Java; it uses Java examples to demonstrate computer science. Most chapters start with language features and end with concepts.
- Conciseness. An important goal of the book is to be small enough that students can read and understand the entire book in a one-semester course.
- Emphasis on vocabulary. We try to introduce the minimum number of terms and define them carefully when they are first used. We also organize them in glossaries at the end of each chapter.
- Program development. There are many strategies for writing programs, including bottom-up, top-down, and more. We demonstrate multiple program development techniques, allowing readers to choose methods that work best for them.
- Multiple learning curves. To write a program, you have to understand the algorithm, know the programming language, and be able to debug errors. We discuss these and other aspects throughout the book, and include an appendix that summarizes our advice.
Think Java is a free textbook available under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License . Readers are free to copy and distribute the text; they are also free to modify it, which allows them to adapt the book to different needs, and to help develop new material. The LaTeX source for this book is in this repository.