Preface
This book is designed for university students taking a first module in software development or programming, followed by a second, more advanced module. The book uses Java as the vehicle for the teaching of programming concepts – design concepts are explained using the UML notation. The topic is taught from first principles and assumes no prior knowledge of the subject.
The book is organized so as to support two twelve-week, one-semester modules, which might typically
comprise a two-hour lecture, a one-hour tutorial and a one- or two-hour laboratory session. The self-test
questions at the end of each chapter ensure that the learning objectives for that chapter have been met,
while the programming exercises that follow allow these learning objectives to be applied to complete programs.
In addition to these exercises and questions, a case study is developed in each semester to illustrate
the use of the techniques covered in the text to develop a non-trivial application. Lecturers who teach on
modules that run for fewer than twelve weeks in a semester could treat these case studies as a self-directed
student learning experience, rather than as taught topics.
The approach taken in this book is ideal for students entering university with no background in the subject
matter, often coming from pre-degree courses in other disciplines, or perhaps returning to study after long
periods away from formal education. It is the authors’ experience that such students have enormous diffi-
culties in grasping the fundamental programming concepts the first time round, and therefore require a
simpler and gentler introduction to the subject than is presented in most standard texts.
The book takes an integrated approach to software development by covering such topics as basic design
principles and standards, testing methodologies and HCI as well as looking at detailed implementation
topics.
In the first semester, considerable time is spent concentrating on the fundamental programming concepts
such as declarations of variables and basic control structures, methods and arrays, prior to introducing students
to the concepts of classes and objects, inheritance, software quality, graphics and event-driven
programming.
The second semester covers more advanced topics such as packages, interfaces, exceptions, two-dimensional
arrays, collection classes from the Java Collections Framework, advanced graphics, file-handling
techniques, the implementation of multi-threaded programs and network programming.
This second edition of the book contains significant modifications and additions to the first edition, and is
based around the latest release of Java, namely Java 5.0. Selection and iteration are now covered in separate
chapters in the first semester, which now also includes a new chapter dedicated to the implementation of
methods. The Swing package is now used throughout the book for the development of graphical user interfaces.
The second semester includes new chapters on the Java Collections Framework and network
programming.The latest features of Java 5.0 have been incorporated throughout the book.These include the
Scanner class for keyboard input, the enhanced for loop for iterating over collections, generics for type-safe
collections and enumerated types. As well as these changes, the end of chapter questions and programming
exercises have been significantly revised.
The accompanying CD contains a Java IDE, with instructions for installation and use, and the source code
for many of the classes from the book.
We would like to thank our publisher, McGraw-Hill, for the encouragement and guidance that we have
received throughout the production of this book.We also would like to thank David Hatter for his continual
help and support over the years.
Additionally, we would like to thank especially the computing students of the University of East London for
their thoughtful comments and feedback. For support and inspiration, special thanks are due once again to
our families and friends.
Dr Quentin Charatan (q.h.charatan@uel.ac.uk)
Dr Aaron Kans (a.kans@uel.ac.uk)
London, UK, September 2005