Walter Savitch: Java
An Introduction To Computer Science and
Programming (3rd ed, Prentice-Hall, 2004)
(summary by Lori Case)
Since a proposed course outline was already prepared for
this book, I took the approach of reviewing the book, primarily based on the outline,
and with an eye towards what students in CS134 would need. I have briefly looked
at the rest of the book, but not nearly in the same detail at the “referenced” parts.
Overall, while admitting the book clearly has some shortcomings
as others have mentioned, I do like this one. There is lots of material which would
not be covered in CS125, but that can be said of most of the books that attempt
to be full CS1 texts. For the most part, what it does that we will be using, it
does pretty well. I think it would be a book that would not intimidate most students.
They may have to look around to find exactly what they need in a section or chapter,
but the headings, etc. (okay, not necessarily the colours
and font changes) are useful.
What I like:
- self-test
questions
- examples,
with things fairly clearly marked when they are “improved” later
- memory
model details handled nicely and in a fair amount of detail
- the author
defined input methods (though the library does not have methods like “intIsAvailable()”
which the becker.io library has)
- informal
style of writing – this means that it often takes longer to read what is
being said, but I think it also makes the meanings clearer. Some students
prefer a more formal writing style, but some of the students who enter
this class (compared to those entering 133/134) might possibly have an “inferiority
complex” wrt programming – so the informal tone
is likely to work better for most.
What I don’t like:
- a bit of
an over-reliance on update methods in classes and on using the default constructor
(I prefer for the constructor to do most of the initialization)
- there is
some discussions of sub-classes really being of type super-class (though this
discussion is not in the course outline corresponding to the Savitch text – I’d prefer that to be discussed rather than
interfaces, for example – but that is not an issue with the text), but no discussion
of casting of objects (a bit of background here is assumed in CS134)
- no
discussion on “enlarging” arrays – I guess this is not actually on the
CS125 topic list, so it might be a moot point (realistically, I think this
can be post-poned to CS134 – as long as that
information is relayed clearly to 134 people)
- does the obvious dislike really need to be mentioned
again?