Java with BlueJ
Ron McFadyen, University of Winnipeg
Copyright Year: 2016
Publisher: Ron McFadyen
Conditions of Use
There are, of course, many Java topics not covered by this book, but the book does a good job of covering important concepts for an introductory programming course. For the topics that are covered, the book is quite exhaustive, covering small... read more
There are, of course, many Java topics not covered by this book, but the book does a good job of covering important concepts for an introductory programming course. For the topics that are covered, the book is quite exhaustive, covering small details of syntax that students may or may not encounter in their first year or two. The coverage of these topics is complete enough to answer most questions an intro student may come up with when introduced to the basics, but there are some notable exceptions (ex. comments aren’t given a complete explanation before being used in example programs)
There are some minor typos with snippets of program syntax, but these can lead to confusion. The primary content is related to the reader accurately.
Since this focuses on basic Java concepts that aren’t likely to change, this aspect of the book will be long lived. The book also uses BlueJ in a way that is likely to stay fairly consistent, but with recent updates to the JDK (such as jshell in JDK 9 and “var” in Java 10), tools like BlueJ may be updated to incorporate these beginner-friendly features. That won’t break anything that’s in the book and no static book can account for these changes anyway. Since the book doesn’t take great advantage of BlueJ’s codpad, the jshell update is mostly irrelevant. The section on variables could be fairly simply updated to incorporate the “var” keyword if the author chooses to do so in the future. Other changes will likely also be easy to integrate with the existing text.
The language of the book is easy to follow. Sentences are not complicated and the language is concise. Examples are worked through slowly for an introductory programmer. With the exception of a few concepts or terms in the beginning chapters, terms are carefully introduced.
The language and delivery of concepts is consistent throughout the book. After the first few examples, the reader will recognize the format and what they should expect from BlueJ if they work through an example themselves.
The book does well dividing topics in to small, logical, self-contained sections with relevant examples. Non-essential chapters of the book are identified early.
The introduction jumps right in to Java history and architecture. As an introductory programming book, it might be more helpful to first introduce the reader to programming, generally, even though the book focuses on Java, specifically. Other times some concepts are introduced a bit too early (for example, literals of many types are introduced before the data types are), though some degree of this is hard to avoid, especially in the beginning, when many concepts are intertwined. After reading through a complete chapter, there are few questions left unanswered. I liked that style conventions were addressed as concepts come up, and not all at once later in the book. For instance, care was taken to discuss variable naming at the point that variables are introduced and the purpose for indenting if/else structures is specifically addressed. Exercises are spread throughout the book at thoughtful intervals. This is also important in an introductory text where students are feeling out the practice of programming at the same time that they’re reading about it.
The format of the book is very straight-forward. The code is well formatted with line numbers and helpful syntax coloring. Figures are helpful and well positioned on the pages. There could be improvements with some of the figures, but overall the book is easy to navigate.
A couple minor errors, though most are typos (as already mentioned).
The book doesn’t use examples that are specific to particular races, ethnicities, or backgrounds, with the exception of very few that include references to gender, but those that do are inclusive (the data type used is literally non binary).
While the title of the book is “Java with BlueJ”, the features of BlueJ aren’t exhaustively explored. I’m not saying this is a bad thing, necessarily. Conceivably and with some difficulty, the book could even be used in a class with a different editor. However, readers shouldn’t assume that all of the teaching tools in BlueJ will be utilized (at least in part 1).
The text covers the basic aspects of programming in Java including variables, assignment, control structures, arrays, class definitions, and several of the basic Java classes such as String, ArrayList, Random, Scanner, Math, and wrapper classes.... read more
The text covers the basic aspects of programming in Java including variables, assignment, control structures, arrays, class definitions, and several of the basic Java classes such as String, ArrayList, Random, Scanner, Math, and wrapper classes. In addition, it presents a brief introduction to GUI programming.
The content of the book is generally accurate with the exception of some typographical errors as noted below.
The Java features discussed in the book are not likely to change in the foreseeable future. The BlueJ features may not be as stable, but they are not likely to change in a way that would make the book unusable any time soon.
The text is written in a straightforward style. The material is presented in direct, concise sentences, generally avoiding excessive verbiage. There are occasional spots where perhaps a bit more explanation might be helpful, such as in the discussion of the use of the enhanced for-loop with arrays or the discussion of the meaning of the "static" keyword.
The text has a consistent point-of-view and use of language.
Many of the topics in the text are presented as self-contained units, though many of the later chapters build on material presented in earlier chapters. This is the usual practice in introductory texts in programming. There is some modularity within chapters, such as the presentation of conditional and iterative control structures. Some re-arrangement of chapters is possible after the first three. For example, arrays could be presented before ArrayLists, and the chapter on classes could be presented earlier.
The chapters follow a logical progression.
The text contains a great many typographical errors. Most of them are minor, but a few detract from the value of the text. For example, many of the tables contain incorrect symbols that could be confusing and misleading.
The text contains no grammatical errors.
The text does not appear to be culturally insensitive or offensive. Examples are limited to areas with which all students are likely to be familiar.
The text is appropriate for teaching beginning Java programming. It presents the basic material clearly and succinctly. There are clear, helpful explications of the meaning of most of the program examples. The text is less appropriate for teaching problem solving and program development. The strongest part of the text is the discussion of control structures in Chapter 3, as noted above. The weakest part is the discussion of Java class definitions in Chapter 7. It would be helpful to have more discussion of how one might go about developing a class and its methods. It would also benefit from illustrations directly from BlueJ of class relationships and what happens to objects when their internals are modified by methods.
Table of Contents
- 1. Introduction
- 2 Basics
- 3 Control Structures
- 4 Introduction to Methods
- 5 Classes in the Java Class Libraries
- 6 ArrayLists
- 7 Designing Java Classes
About the Book
This book is Part I of a two-part set that introduces the Java programming language. The text assumes the student will be using the BlueJ development environment and provides some introductory BlueJ material. Our experience has been that BlueJ is easy to learn and provides a good programming environment for the beginner programmer.
About the Contributors
Ron McFadyen is a Professor in the Computer Science department at University of Winnipeg, Winnipeg, MB.