Derek Bridge

Past Teaching

Software Development

Books

Course text

It may be useful for you to use a book (a) so that you can see a presentation that is different from my own, especially if mine isn't making sense to you, and (b) so that you can quickly look up Java details when you need to.

Choose any book you like for this purpose (e.g. the one you bought in first-year - if you bought one in first-year). You do not have to use the one I recommend below. One of the main reasons for my recommendation below is that the book is available on-line. Don't buy it! It's far too expensive. Read it on-line.

If you choose some other book, remember that there are two main versions of Java and several subversions. The numbering scheme has the potential to confuse people. If your book says it deals with Java 2 or Java 1.2 (NB that's Java 1.2, not Java 1.1.2) or Java 1.3 (NB that's Java 1.3, not Java 1.1.3) or Java 1.4 (NB that's Java 1.4, not Java 1.1.4), then it's fine. If it deals with Java 1.1 but mentions Swing, then it's probably also OK. Otherwise, it's too out-of-date for this course. You also need to choose a book that takes a strongly object-oriented viewpoint (sometimes referred to as being objects-first).

Campione,M., Walrath,K. & Huml, A.
The Java Tutorial: Short Course on the Basics (3nd edn)
Addison-Wesley, 2001
On-line version of the book (at Sun's web site);
On-line version of the book (local copy)
* * * *

The whole of this book (and several other related books) are available on-line. You should use the on-line version. It's certainly too expensive to buy.

It is reasonably clearly written and overwhelmingly comprehensive. There are various `trails' through the material, which enable you to focus on different aspects of Java.

Introductions to Programming using Java
Arnow,D. & Weiss,G.
Introduction to Programming Using Java: An Object-Oriented Approach
Addison-Wesley, 2000
Associated web pages
* * * *

A book which takes an objects-first approach. However, some of the example programs are hard work.

Make sure you use the 2nd edition, also referred to as the 'Java 2 Update'.

Barnes, D.J.
Object-Oriented Programming with Java: An Introduction
Prentice Hall, 2000
Associated web pages
* * * *
Another book which takes an objects-first approach. I think this book is really good. I'd be interested to know what you think.
Garside,R. & Mariani,J.
Java: First Contact
Course Technology, 1998
Associated web pages
* * * *
A clearly-written, but somewhat dated book that takes an objects-first approach.
Hortsmann, C.
Computing Concepts with Java Essentials (3d edn)
Wiley, 2003
Associated web pages
* * * *
This book is excellent on the minutiae of programming (e.g. lots of good advice and examples on if statements, while loops, and so on) and, over several editions, it has also become much better at object-orientation.
Hortsmann, C.
Big Java
Wiley, 2003
Associated web pages
* * * *
This book is the same as the book mentioned above plus six extra chapters on more advanced topics.
Bishop,J. Java Gently (3rd edn)
Addison-Wesley, 2001
Associated web pages
* * *
The approach here is not sufficiently strongly object-oriented for my liking but the book has many enjoyable example programs. The accompanying web site is excellent.
Cornelius, B.
Understanding Java
Addison-Wesley, 2001
Associated web pages
* * *
This is a book written by someone who knows his stuff and how to teach it. Material on how to write class definitions containing instance variables and instance methods comes too late for my liking. And the variable naming convention is irritating. But there is much that is good here.
Deitel,H.M. & Deitel,P.J.
Java How to Program (3rd edn)
Prentice-Hall, 2000
Associated web pages
* * *
This gives a very comprehensive treatment. It will not necessarily help you to think in an object-oriented way. It acts more as a reference source than a textbook.
Lervik, E. & Havdal, V.B.
Java the UML Way
Wiley, 2002
Associated web pages
* * *
This is a decent enough treatment. It's a bit dry: the example programs and exercises are utterly uninspiring. I'm not sure that UML features sufficiently in the book to warrant its inclusion in the title.
Riley, D.D.
The Object of Java
Addison Wesley, 2002
Associated web pages
* * *
This is an OK book. But it relies too much on the author's own library of GUI classes for my liking. If you use this book for CS2000, you will have to re-learn a lot of material in order to make the transition from this textbook library to the standard Java library used in the course.
Savitch,W. Java: An Introduction to Computer Science and Programming (2nd edn)
Prentice Hall, 2001
Associated web pages
* * *

This book takes an objects-early approach (while I would prefer an objects-first approach). But, its explanations do seem very clear, and it is written in a very knowledegable way. So, I think there's much in here that the novice programmer could learn from.

There are good resources on the web site.

Winston,P.H. & Narasimhan,S.
On to Java, On-Line
On-line version of the book
* *

This book is written in a concise way but has surprisingly good coverage. While the ordering of material brings object-orientation in later than I would like, the presentation of the material is highly original: e.g. each chapter is titled 'How to...'

I kinda like this book, although the on-line version is painful to navigate through.

Wang,P.S.
Java with Object-Oriented Programming and World Wide Web Applications
PWS Publishing, 1998
Associated web pages
* *
This books is objects-early. Indeed, objects come very early. But this is accomplished by assuming a background knowledge of C or C++. If that's OK for you, then you'll find it reasonably well-written and with a fair amount of (introductory) material on Internet programming.
Bell,D. & Parr,M.
Java for Students (3rd edn)
Prentice Hall, 2002
Associated web pages
* *
This is a clearly-written book, but not strong enough on object-oriented programming for CS2000.
Lambert,K.A. & Osborne,M.
Java: A Framework for Programming and Problem Solving (2nd edn)
International Thompson Publishing, 2002
Associated web pages
* *
A clearly written book but object-orientation comes late-ish. A GUI package allows GUI programming of sorts to come early, which makes for nice examples, but if you use this for CS2000, then you will have to relearn how to do GUIs properly later.
Niño,J. & Hosch,F.A.
An Introduction to Programming and Object-Oriented Design
Wiley, 2002
Associated web pages
* *
There's some reasonably good material on program design in here, which is worth reading. But the initial chapters are a rather heavy-handed, and probably unsuccessful, introduction to programming.
Decker,R. & Hirshfield,S.
programming.java An Introduction to Programming Using Java (2nd edn)
PWS Publishing Company, 2000
*
These authors are too fond of presenting material in long lists. The book is redeemed a little by some very enjoyable example programs.
Davies,R.
Introductory Java for Scientists and Engineers
Addison-Wesley, 1999
Associated web pages
*

Obviously, this book is targetted at a specific audience and, for all I know, it might suit them well.

While there is some object-oriented material mid-way through the book, this has little impact on the second half of the book, where Java is used to implement programs to solve simple scientific problems. Maybe this says something about the limited role of object-oriented programming in scientific applications? (Is this heresy?)

Kalin,M.
Object-Oriented Programming in Java
Prentice Hall, 2001
Associated web pages
*
This book assumes prior object-oriented programming experience, so it is not very suitable for this course. As a reference source, it has surprisingly broad coverage.
Holmes,B.
Programming with Java
Jones and Bartlett, 1998
Associated web pages
-
Avoid.
Holmes,B.J. & Joyce, D.T.
Object-Oriented Programming with Java
Jones and Bartlett, 2001
Associated web pages
-
Avoid.
Liang,Y.D.
An Introduction to Java Programming
Que E&T, 1998
-
Insufficiently object-oriented; otherwise is solid but uninspiring.
Culwin,F.
Java: An Object First Approach
Prentice Hall, 1998
Associated web pages (includes an on-line version of a draft copy of the book)
-
This book takes an object-first approach, and it has some good stuff in it. However, it will not suit a novice programmer. More experienced Java programmers might gain something from it. Be warned that the major case study at the end of the book inadvertently provides classic examples of how not to use inheritance.
Analysis, Design & Implementation

The books listed below are generally more advanced than the ones listed above. But they are all books that I think highly of.

They cover all aspects of the development of software, not just the coding aspects.

Most but not all take an object-oriented approach; many but not all use Java for example programs.

Arnold,K. & Gosling,J.
The Java Programming Language (3rd edn)
Addison-Wesley, 2000
Associated web page
* * *
This is a short but definitive reference source on the core Java language.
Booch,G., Rumbaugh,J. & Jacobson,I.
The Unified Modeling Language User Guide
Addison-Wesley, 1999
* *
This is one of the three definifitive texts on the UML. This is the most readable of the three, although I'd recommend starting with a gentler, shorter overview first.
Coad,P., Mayfield, M. and Kern,J.
Java Design: Building Better Apps & Applets (2nd edn)
Yourdon Press, 1999
* *

There is some excellent stuff in here on good design of Java programs. It is certainly worth reading.

However, the writing style is `chatty'. What this means is there is much repetition and use of sentence fragments instead of whole sentences. In places, this style made the content almost unintelligble.

Culwin,F.
A Java Foundation Classes Primer
Macmillan Press, 2000
Associated web pages
* *
This book might give you some ideas about implementing more sophisticated graphical user interfaces than those covered in the course.
Flanagan,D.
Java in a Nutshell (4th edn.)
O'Reilly, 2002
Associated web pages
* * *
This is a popular reference source, liked especially by C/C++ programmers coming to Java.
Fowler,M. with Scott,K.
UML Distilled: A Brief Guide to the Standard Object Modeling Language (2nd edn)
Addison-Wesley, 2000
* *
This is a clear overview of the UML.
Gamma,E., Helm,R., Johnson,R. & Vlissides,J.
Design Patterns: Elements of Reusable Object-Oriented Software
Addison-Wesley, 1995
* * * *
This is a classic text on software architecture. If you haven't seen anything on design patterns before, it is capable of changing your whole approach to software design.
Geary,D.M.
Graphic Java 2: Mastering the JFC, Volume 11, Swing (3rd edn.)
Sun Microsystems Press, 1999
* *
This is a reference source for Swing - it makes you realise how little of Swing you're truly familiar with.
Gilbert,S. & McCarty,B.
Object-Oriented Design in Java
Waite Group Press, 1998
* *
This is a reasonable overview of object-oriented design for Java programs. Later chapters give simple introductions to slightly more advanced programming topics. The book would have more focus had the authors stuck instead to the topic of design.
Jacobson,I, Booch,G. & Rumbaugh,J.
The Unified Software Development Process
Addison-Wesley, 1999
* *
This is one of the three definifitive texts on the UML. This one is the least convincing of the three. Bear in mind that there are other ways of approaching the process of software development.
Jia, X.
Object-Oriented Software Development using Java
Addison-Wesley, 2000
* * * *
A good book to read after you've completed the CS2000 module. Lots of excellent stuff in it that will improve the design of your programs.
Larman,C. & Guthrie,R.
Java 2: Performance and Idiom Guide
Prentice-Hall, 2000
* * *
This book brings together some really useful information that can help you to become a more advanced Java programmer. It contains lots of good advice.
McConnell,S.
Code Complete
Microsoft Press, 1993
* * * * *
This is a book all about implementation (coding, testing, debugging, tuning for performance, etc.). It is full of invaluable advice. While it is perhaps targeted at C programmers, and some of you might think it is dated, I think it still has much to say to all programmers.
Meyer,B. Object-Oriented Software Construction (2nd edn)
Prentice-Hall, 1997
Associated web pages
* * * *

This is essential reading for anyone with any interest in object-oriented programming. It covers issues of software quality; object-oriented programming language design; object-oriented program analysis, design and implementation; object-oriented programming style; and a whole load more.

It is written in a highly opinionated style. It is often dogmatic and sometimes, arguably, wrong. But it is interesting throughout.

Odell,J.J.
Advanced Object-Oriented Analysis & Design Using UML
Cambridge University Press, 1998
* *
Some of the articles collected in this book are quite interesting. The design templates are especially worth reading.
Pooley,R. & Stevens,P.
Using UML: Software Engineerng with Objects and Components
Addison-Wesley, 1999
Associated web pages
* *
This is a short, clear overview of the UML. It also contains some chapters of `contextualisation', e.g. on software engineering in general and component-based design.
Rumbaugh,J, Jacobson,I, & Booch,G.
The Unified Modeling Language Reference Manual
Addison-Wesley, 1999
* *
This is one of the three definifitive texts on the UML. This first 100 pages are a useful enough overview. I could live without the remaining 400 pages.
Warren,N. & Bishop,P.
Java in Practice: Design Styles and Idioms for Effective Java
Addison-Wesley, 1999
* * *
I thought that this slim volume was excellent. Once you have a grasp of Java, read this to deepen your understanding and to improve your design and coding.
Winder,R. and Roberts,G.
Developing Java Software (2nd edn)
Wiley, 1999
Associated web pages
* * *
This is a strange mixture but useful. It acts both as a reference manual to the core Java language; it demonstrates how to build a Java class library for common Computer Science data structures and algorithms; and it covers a few aspects of object-oriented design.