COMP101 - ANNOTATED BIBLIOGRAPHY

On this page I present some short notes on a number of Java books which I have eithe: read comprehensively, skimmed, dipped into, or come into contact with in some other way. I have categorised them as follows:

1. STANDARD: Java texts which I consider suitable, at least to some extent, for accompanying COMP101. My criteria here are:

  1. Overall readability and understandability.
  2. Written from a "stand alone" programming perspective, i.e. no additional, non standard packages, are required to be downloaded before students can implement the given programs in the text.
  3. Issues to do with the WWW (in particular Applets) and Graphical User Interfaces (GUIs) are left till later in the text (as these is not part of the COMP101 syllabus).
  4. Price.

I have identified a number of texts (12 at the last count) that fall into this category so below I have given these a star rating.

2. GUI: Java text books where the author deems it important that I/O is done through a "windows" interface. This approach undoubtedly results in more visually impressive programmes (there is a programming maxim that sates that a piece of software is only as good as its interface); however, in my opinion this detracts from the programming ethos that I wish to encourage on COMP101. It also increases the amount of material that students need to familiarise themselves with at the start of the module. Having said that there are some good texts around that adopt this perspective --- although not suited to COMP101.

3. NON-STANDARD PACKAGES: I/O in Java is not as straight forward as it is in other languages (you need to make use of wrapper classes). To get round the steep(ish) learning curve associated with Java I/O some authors side step the issue by providing students with a non-standard "I/0 package", either: (a) on a CD that comes with the text; or (b) by providing a URL from where it can be downloaded; or, in the worst case, (c) as an Appendix from where students are expected to type the code in themselves). These non-standard packages can then be used to "get started" while leaving the detail till later in the text.

In a similar manner some authors provide a non-standard "windows package" to allow students to produce GUI style interfaces quickly. Although I have some sympathy with the idea of getting students "started" quickly with respect to Java IO, I am not easily impressed by fancy interfaces.

In general I am fundamentally opposed to the use of non-standard packages, because it means that any code written using such packages is no longer portable (a desirable attribute for any piece of software regardless of programming language). In the context of COMP101 I am also opposed to the use of-non standard packages because of: (a) the additional initial learning effort required to allow students to become familiar with the package and (b) that their usage tends to divert attention away from the core aims of the course (problem solving with the Java cpmputer programming language using sound OO software engineering techniques").

4. OTHERS. These are further text books dedicated to particular aspects of Java programming, e.g. concurrent programming or 3-D visualisation, which although interesting are will beyond the scope of COMP101. Also Java text books that are written predominantly from a WWW perspective. Although many of these books are very good they are beyond the scope of COMP101.




STANDARD TEXTS. Star notation indicates degree of appropriateness to COMP101, the more stars the more highly I recommend the text. (The recommended set text has four stars.)

ReferenceComments
** Arnold, A. and Gossling, J. (1998). The Java Programming Language (2nd Edition). Addison-Wesley. Written by the developer of Java (James Gossling). This is a good reference work providing good support for COMP101, but not suitable as a core text.
Arnow, D. and Weiss, G. (2000). Java: An Object Oriented Approach. Addison Wesley. Good comprehensive text giving coverage of all COMP101 material (and beyond). Numeric input (wrapper classes) not introduced till late on. OK for supportive reading for COMP101.
* Campione, M. and Walrath, K. (1998).The Java Tutorial (2nd Edition). Addison-Wesley. Comprehensive reference work. Its concise nature means that it might present a challenge to some COMP101 students. Useful for "looking things up" in.
*** Charatan, Q. and Kans, A. (2001). Java, The first Semester. McGraw-Hill. Good all round text. More comprehensive than that required for COMP101, but contains material useful for second semester Java related courses (COMP102 and COMP106).
Culwin, F. (1998). Java: An Object First Approach. Macmillan press Ltd. A useful text that takes an approach roughly in tune with the ethos of COMP101, but considers different topics as a sequence of "case studies". This is fine but means that the organisation of the text is significantly different to the logical organistaion of the COMP101 series of lectures.
** Garside, R. and Mariani, J. (1998). Java: First Contact. Course Technology. This text was written by a team at the University of Lancaster, one of the first UK Universities to adopt Java as their "teaching language". Good overall text more comprehensive than that required for COMP101 but contains material useful for second semester Java related courses (COMP102 and COMP106).
**** Hubbard, J.R. (1999). Programming with Java. McGraw-Hill. Good introductory guide in line with the general ethos of COMP101. It is not suited to students requiring a more in depth knowledge, however it does contain material beyond that required for COMP101, but not significantly "beyond". This is the "set text" for COMP101 (it is also very competitively priced compared to other similar texts).
Shelly, G.B., Cashman, T.J. and Starks, J.L. (2001). Java Programming: Introductory Concepts and Techniques. Thomson Learning. This is a low cost "good looking" text in tune with the COMP101 approach. However, the subject is presented as a series of "projects" which does not easily allow particular sections of the text to be related to individual COMP101 lectures.
Smith, M. (1999). Java: An Object-Oriented Language. McGraw-Hill Comprehensive text giving good coverage of all COMP101 material (and beyond). Numeric input (wrapper classes) not introduced till late on. OK for supportive reading for COMP101.
Lewis, J. and Loftus, W. (2000). Java Software Solutions: Foundations of Program Design (2nd Edition). Addison Wesley. Reasonable text but introduces GUIs and Applets fairly early on. OK as a supporting text for COMP101 but not core reading.
Savitch, W. (2001). Java: An introduction to Computer Science and programming. Prentice Hall. Comprehensive text giving good coverage of all COMP101 material (and beyond). Numeric input (wrapper classes) not introduced till late on. OK for supportive reading for COMP101.
Winder, R. and Roberts, G. (2000). Developing Java Software (2nd Edition). Wiley Comprehensive but concise work. Most of the material covered in COMP101 is contained in the first 3 chapters (out of a total of 33). Its concise nature means that Winder and Roberts might present a challenge to some COMP101 students. Numeric input is not mentioned till relatively late on.

GUI/WWW

ReferenceComments
Bailey, D.A. and Bailey, W.A. (2000). Java Elements. Principles of Programming in Java. McGraw Hill Good text covering much of the material contained in COMP101 but concentrating on the Elements class which is not mentioned in COMP101 at all. GUI interfaces introduced early on, nice "fractal" examples.
Barnes, D.J. (2000). Object Oriented Programming with Java: An introduction. Prentice Hall. David Barnes wrote a number of Ada books one of which was the set text on a previous incarnation of COMP101. This work draws significantly on example material found on the the Sun Java WWW pages which means that GUI interfaces are introduced early on. Readers are invited to down load these examples, however, as the system provided by the Department of Computer Science at the University of Liverpool is a closed system we would have to download this on behalf of student. Currently (May 2001) this has not yet been done.
Dietel, H.M. and Dietel, P.J. (1999). Java: How to proghram (3rd Edition). Dietel and Dietel have an established track record in the provision of programming text books. Their Java book teaches Java using the Java Foundation Classes (JFC) also referred to as Swing classes. These allow students to quickly produce GUI style interfaces which is not a central theme of COMP101. This is also a giant tome comprising over 1350 pages - not for the feint hearted!
Skansholm, J. (2000). Java from the beginning. Addison Wesley. Jan Skansholm has been writing programming books foe many years. He also wrote a number of very good Ada books (Ada from the beginning on a previous incarnation of COMP101). I have used his Java book extensively, however the organsisation is such that for first year students related concepts are not always placed together. It is probably better more suited as a second year undergraduate text for students who already have some knowledge of programming. It also highlights the "importance" of GUI interfaces and approaches the Java from this perspective --- thus not suited to COMP101.

NON-STANDARD PACKAGES

ReferenceComments
Bishop, J. (2001). Java Gently (3rd edition). Addison Wesley. Judith Bishop is a well respected author who wrote a popular Pascal book in the early 1990s (pascal Gently). Her Java book (now in its 3rd edition) is also popular. However many of the examples make use of a JavaGently non-standard package.
Culwin, F. (2000). Java Foundation Classes Primer. Macmillan press Ltd. Deals, as the name suggests, with the Java Foundation Classes (JFC), also referred to as Swing classes, which provide a collection of components that can be used to construct GUIs. Although interesting, Java swing dies not form part of COMP101.
Holmes, B.J. and Joyce, D.T. (2001). Object-Oriented Programming with Java (2nd Edition). Jones and Bartlett. The first addition of this work was used as the set text for COMP101. Unfortunately this second revised addition has adopted a GUI interface perspective and requires students to load an audio-vissual interface package, avi, to get started.
Kamin, S.N., Mickunas, M.D. and Reingold, E.M. (1998). An Introduction To Computer Science Using Java, McGraw-Hill I used this work for preparing some of the COMP101 material. However Kamin et. al. use a non-standard class, Keyboard, to allow simple IO early on in the text.
Wu. T. (2001). An introduction to Object-Oriented Programming with Java (2nd Edition). McGraw-Hill Thomas Wu presented a number of papers on teaching OO languages in the mid 1990s. His current Java work, however, relies on a non-standard package JavaBook and is therefore not recommended.

OTHER

ReferenceComments
Lea, D. (1997). Concurrent programming in Java: Design Principles and Patterns. Addison Wesley. Specialised work dealing with multi-threading etc.
Sowizral, H., Rushforth, K. and Deering, M. (1998). The Java 3D API Specification. Addison Wesley. Text book dedicated to the creation of three-dimensional graphics applications and applets.
White, S., Fisher, M., Cattell, R., Hamilton, G., and Hapner, M. (1999). JDBC API Tutorial and Reference (2nd Edition). Addison Wesley. Java database connectivity



Created and maintained by Frans Coenen. Last updated 10 May 2001