Ed Knorr said
I have been meaning to learn Java for a long time, kept putting it off, and finally got around to it this summer. Having skimmed through a bunch of Java textbooks, I narrowed it down to this one. I heard the authors speak before (e.g., at CS education conferences), and because their presentations were clear and interesting, I figured that they probably write as well as they speak. I wasn't disappointed. This is a VERY nice book. Although I know other programming languages, I knew nothing about Java, and since I might be teaching this course in the future, I decided to read the whole book and do the programming examples as I went along.
The highlights of this book are: starts with a procedural approach (objects come later, but they use objects like Strings early on); very readable; LOTS of clear and relevant examples; non-trivial examples (like reading a large text file to compute and sort a list of unique words); and very good attention to loops, functions, ArrayLists, LinkedLists, iterators, the Java Collections Framework (introductory data structures like HashMap, TreeMap, HashSet, TreeSet, but doing so in a nice way that doesn't overburden the student) ... and the authors also give programming tips, short-cuts, and good attention to off-by-one errors (e.g., fencepost cases).
Furthermore, they provide fragments of code that have a "thumbs down" icon in the left-hand margin. After having taught many programming courses, the authors are well-aware of common mistakes that students make, and they share these experiences at just the right points.
I like their stock market example. They spent a whole bunch of pages on some basic stock market material (it's easy to understand), and they used it to explain inheritance, classes, methods, abstraction, etc. This example can easily be expanded in many ways, if need be, say for a programming project for the class). For example, a project could build on the examples in the text, whereby students also compute the portfolio value, add interest, add commissions, add foreign exchange fees, add dates, compute percentage profits on an annualized basis, etc. Such an approach would be great to get students to modify the textbook's existing code, thereby giving students "real world" programming experience (i.e., modifying existing code). A CD comes with the book and has the source code for the examples in the textbook, if you want to reduce typing.
They also provide some neat graphics applications that allow the reader to create his/her own applications using Points, shapes, colours, etc. At the end of the book, you'll find an introduction to basic windowing applications, including event handling.
Jared R. Clement said
I couldn't find any clarification elsewhere, so I feel the need to state it here: this textbook is the same book as "Building Java Programs: A Back to Basics Approach With Portal". Perhaps this is obvious to others, but I wasn't 100% sure so opted not to buy from Amazon, and because of that I ended up spending $35 more than necessary. The "...with Portal" version includes an access code for Reges & Stepp's online video tutorials. The video tutorials are good, but not necessary.
This text is very good. Those with programming experience may prefer something more concise. Those without programming experience, such as myself, will appreciate the accessibility of the text. The authors explain even the most basic of programming concepts and terminology, no question is left unanswered. In many textbooks I find myself hitting up Google to elaborate on what the text failed to address, but 400 pages in, that has yet to happen with Building Java Programs.
My only complaint is that they sometimes use metaphors for programming concepts when not necessary, which often results in me feeling as if the book dumbed it down too much. As a particular example, the authors feel the need to use plumbing as an analogue to the Scanner class in that the Scanner can be hooked up to different types of input (pipes) and let out a little at a time. This is done a full chapter *after* using the Scanner class with System.in -- at that point, the utility of the Scanner class is fully apparent and how it works with different input should be rather intuitive. Many of the metaphors are unnecessary.
Summary: Programming is fun, this book is a good way to learn it. Whether you're taking a Java class or not, I recommend this book.
Thomas Van Doren said
This text provides clear and concise instructions, concepts, examples, and case studies. I was able to comprehend it without difficulty and readily apply the concepts to my intro java experience.
Soyoung Shin said
Far too often, textbooks and teachers alike delve into interesting aspects of course content before building a solid foundation to learn on top of. This seems to be especially prominent in Computer Science courses, which is unfortunate for those who have no past experience in programming. This book, as the title implies, goes back to basics, building a foundation for successive lessons without overloading the reader with too much too fast.
Having recently taken a CS1 equivalent course that uses this book as the basis for the course material, and TA-ing said course, I can say without a doubt that this book helps students understand the material. The layout of each chapter allows incremental learning, and lets the reader quickly attain information that is useful, such as practice problems, notes about common programming pitfalls, code snippets that demonstrate key concepts, etc. As absurd as it may seem to praise a book for something so fundamental such as practice problems, the truth is many textbooks do this extremely poorly, and as a current undergrad who has read several poorly written textbooks, reading "Building Java Programs" is like a breath of fresh air.
The content and flow of topics is, in my opinion, perfection. Before touching the innards of an object, the reader becomes strong at procedural programming, and should understand the need for objects. Since the reader has used some Java classes in previous chapters, by mid book, it is very possible to be properly introduced and talk about implementation details. Towards the end of the book, the authors explore sorting and searching, which I feel are important to know as early as CS2 (pre-data structures and algorithms) since many students do not continue with Computer Science after CS2, but still need the programming skills.
This book does a great job of presenting the material for a CS1/CS2 in a logical and clear manner, with wonderful explanations and examples.
Michael Morris said
Before taking the class instructed by Marty Stepp, I had no prior programming experience whatsoever. Using the fact that the book contained Marty's lectures summed-up almost word for word, this is a great way to learn programming. We started with writing methods in a main class and didn't worry about the complicated stuff involving objects until later in the quarter. This gave us a good feel of how computers take and use the information we gave them to accomplish small tasks, as well as insight into what other applications programming could be applied to.
Let me say that from my personal experience, this class was crucial in determining my major. I'm a freshman and I was planning on majoring in Computer Engineering at the UW. However, with no programming or much technical experience, I was on edge whether or not I would stick with CE. However, after taking the course and enjoying it, I believe CE would be more than likely in the future for me.
Comments