Think Java: How To Think Like a Computer Scientist
Chris Mayfield, James Madison University
Allen Downey, Franklin W. Olin College of Engineering
Pub Date: 2016
ISBN 13: 978-1-4919295-6-8
Publisher: Green Tea Press
Conditions of Use
“Think Java” intends to provide all the topics needed for the beginners to learn Java programming. The vocabulary, comprehensive index, a variety of read more
“Think Java” intends to provide all the topics needed for the beginners to learn Java programming. The vocabulary, comprehensive index, a variety of practice exercises at the end of each chapter, and the links to related material stimulate the interest to learn. However, the text does not include a precise introduction and a concluding summary in many chapters. A sorted list of the vocabulary of all the terms can be presented as a glossary before the index.
The content is correct, easy to follow. In the online version, the text for the following hyperlink shows ?? in Section 1.10. http://greenteapress.com/thinkjava6/html/thinkjava6001.html#code
Any textbook on programming concepts needs to reflect the evolution in the field by updating it periodically. It is essential to keep the users updated by extending a reference to the current Java 9 API documentation.
The author employs a clear and readable writing style with easy-to-follow illustrations.
The vocabulary section at the end of each chapter is neither sorted nor precise in some definitions. The definition of the term 'void method' is included in the vocabulary section of the value methods chapter.
The textbook consists of organized and manageable sections and sub-sections. Still, the void and value methods may be merged into a single chapter to enable readability and ensure continuity.
The text presents all the relevant information needed for a beginner progressively with a few structural issues. The sections in some chapters are not organized with smoothly flowing content. For instance, Chapter 2 entitled "Variables and Operators" does not introduces all the most basic data types. A list of all the operators in Java is not presented in the same chapter. The modulus, relational, and unary increment and decrement operators are introduced in Chapters 3, 5, and 7 respectively.
The text flows clean and includes a useful collection of web-links for relevant reading material. The online version enhances both readability and interest by linking one concept to another.
No grammatical errors found.
The textbook is culturally unbiased.
Overall, the availability of the text in pdf, online and printed forms makes it a useful resource for the post-secondary learners.
The textbook covers all of topics for a post-secondary introduction to programming course in Java (CS1). The topics are presented in a "late objects" read more
The textbook covers all of topics for a post-secondary introduction to programming course in Java (CS1). The topics are presented in a "late objects" order. Each chapter includes a Vocabulary section that is a glossary of the terms introduced in that chapter. A comprehensive index is provided, as well.
The content is completely accurate, error-free, and unbiased.
The computer science concepts are up-to-date, generally. The only error that I found was with a link to the development tool, Checkstyle, in Appendix A. The project has moved from sourceforge.net to github at https://github.com/checkstyle/checkstyle. Because this was located in the Development Tools appendix, it should be easy to update in a future release.
One of the strengths of Think Java is how easily understood the writing is. Keeping the language clear is critical in explaining complex computer science concepts and this book does an excellent job.
I found it to be very consistent.
Reading sections are broken up into sections that are clearly distinguished in the table of contents. This is helpful if you choose to skip, for example, sections 5.8 Recursive methods and 5.9 Recursive stack diagrams because you don't teach recursion until the following semester.
Think Java is very well organized. It covers the core computer science topics using the Java programming language, while gently introducing more advanced concepts, such as the description of Java as a Turing complete programming language in section 6.7.
I read the book with iBook reader on my iPad and MacBook. In both cases it was very easy to navigate and all of the figures appeared correctly. I tested it briefly in Acrobat Reader and had no issues with navigating to the various sections.
I found no grammatical errors.
I found the tone culturally neutral. The examples are mathematics based or with familiar objects, such as a deck of cards.
It has covered the topics that are expected to be covered in a beginning programming course. However, the structure and arrangement of the material read more
It has covered the topics that are expected to be covered in a beginning programming course. However, the structure and arrangement of the material is not smooth. Consistency in presentation is missing.
It is accurate, error-free and unbiased.
The links to the java documentation are provided with explicit URLs. It is unavoidable to update these when a new version of Java is released. The life of programming text books is directly related to the evolution of the programming languages. For example, the latest version of Java is Java 8 and this text book is referring to Version 6.
Abstraction (giving and seeing big picture) is very important concept in Java. Some treatment with real world examples would be useful. Some sub-sections in the individual chapters are out of place. For example "(8.5) Reading Documentation" is applicable to any chapter. It is best to cover and provide details on how to search and navigate java documentation in general in the first chapter itself. It would be good to cover "Chapter 15. Object oriented programming" prior to chapters 12,13, 14.
This book lacks consistency. Many chapters jump directly into the material while some chapters start with an introduction (example: 12 Arrays)
The text is well divided into chapters, sections and sub-sections
It is expected that each chapter starts with the goals of that chapter. "What is covered? What will I learn? Why should I read this chapter?" -- these questions should be addressed in the first few paragraphs of each chapter. Many chapter directly jump to the topic and only a couple of chapters have this introduction.
Here are some issues I have found While navigating the PDF, I can jump to a topic by clicking on the page number in the INDEX. However, you can not do the same thing from TABLE OF CONTENTS. It is very limiting to manually nagivate using "page down" or "search"
Didn't find any issues.
There are no offensive or insensitive references.
Chapters (3) and (6) can be combined into "methods". All the concepts explained in these two chapters are same with one distinguishing feature - one type returns nothing. Another type returns something. Rest of the concepts are same.
The book does a great job on providing fundamental programming concepts in a manner that will make it easy for Students to grasp. Materials are read more
The book does a great job on providing fundamental programming concepts in a manner that will make it easy for Students to grasp. Materials are organized in a reasonable manner, although the chapter on loops could be presented sooner. Each chapter ends with Glossary to further help explain the terms used in the chapter. Each chapter had a good amount of exercises at the end. Overall, the book is very well done, and one that I would use in the classroom.
I did not find any errors. I reviewed about 80% of the presented code, and could not find any issues.
The book’s concepts on programming fundamentals will be long lasting. Java may change with new Versions, but the code/syntax presented in this book is standard stuff, so it also should be long lasting (at least as long as Java is in use).
The author is very deliberate in his explanations of using Java in solving problems and in the overall programming concepts. The author does a very good job with presenting examples and explaining in detail each part of the example. Also there is a consistency in how each example, or programming concept is presented.
As stated in the clarity part of the review, the author is very consistent in how he presents examples and concepts. This is one of the strong points of the book, along with the easy simplistic way things are presented. Very easy for Students to see the concept being presented and to understand how it is coded in Java. Some text books over complicate the example, that is not the case in this book.
The text contains 16 chapters and four appendixes. All the chapters were fairly short in size, so that a Student would not get over whelmed with anyone concept. Each chapter was broken down into concise parts, so that an instructor could easily assign the whole chapter or sub-sections. The chapters are arranged in an order, such that the Student can easily flow from one concept to the next, if reading the book in sequence. The one issue, the chapter on Loops should be presented earlier.
Please refer to the comments in the modularity section. Overall, book is very well organized and structured to the point a Student should have no issue going through the book and following the concepts from one to the other.
The text was very clean and loaded with links to relevant material. The book would benefit if there were some links with in the text to assist in navigation. So one concept or example could be linked to another.
Did not find any grammar errors. Assume the text has been scanned multiple times by now.
The text deals with programming fundamentals, Java syntax, and logic. Not much in the way of cultural relevance in this topic, so it should not be offensive to any group.
Overall very impressed with the book and definitely one I would use in my classroom.
Table of Contents
1. The way of the program
2. Variables and operators
3. Input and output
4. Void methods
5. Conditionals and logic
6. Value methods
9. Strings and things
12. Arrays of objects
13. Objects of arrays
14. Objects of objects
A. Development tools
B. Java 2D graphics
About the Book
Think Java is an introduction to computer science and programming intended for readers 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 objectoriented programming, are divided into smaller examples and introduced over the course of several chapters.
This book is intentionally concise. Each chapter is 12–14 pages and covers the material for one week of a college course. It is not meant to be a comprehensive presentation of Java, but rather, an initial exposure to programming constructs and techniques. We begin with small problems and basic algorithms and work up to object-oriented design. In the vocabulary of computer science pedagogy, this book uses the “objects late” approach.
About the Contributors
Chris Mayfield, PhD, is an Assistant Professor of Computer Science at James Madison University. His research focuses on CS education and professional development, particularly in K-12 schools. Over the past several years, he has taught introductory CS courses using POGIL and the flipped classroom.
Allen Downey is an American computer scientist, Professor of Computer Science at the Franklin W. Olin College of Engineering and writer of free textbooks.
Downey received in 1989 his BS and in 1990 his MA, both in Civil Engineering from the Massachusetts Institute of Technology, and his PhD in Computer Science from the University of California at Berkeley in 1997.
He started his career as Research Fellow in the San Diego Supercomputer Center in 1995. In 1997 he became Assistant Professor of Computer Science at Colby College, and in 2000 at Wellesley College. He was Research Fellow at Boston University in 2002 and Professor of Computer Science at the Franklin W. Olin College of Engineering since 2003. In 2009-2010 he was also Visiting Scientist at Google Inc.