...the tutorial is readable and the exercises well thought out and relevant to engineering problems
This is an introduction to programming for engineering students. Starting with a brief introduction to computer concepts and software engineering, it consists mainly of engineering oriented tutorials for C, Matlab and Java.
The C tutorial is the longest and most structured; its ten chapters are a reasonably comprehensive and readable introduction to C. All the major topics are covered, from basic data types via control flow, functions, pointers and arrays to dynamic memory allocation. The only topic that seems short changed is structures: The only reference I can find to them is in the operator table. Checking back with the authors revealed that this was dropped because of severe space restrictions;
Still, the tutorial is readable and the exercises well thought out and relevant to engineering problems. There is also a pleasantly surprising attention to detail: For example, the authors explain the effects of numerical cancellation and how to avoid it where possible. On the other hand, the authors are a little sloppy in other places, for example by missing
#includes of math.h and the - IMHO - inappropriate use of
double. Slightly more worrying though is that they ignore buffer sizes when reading input with
scanf, although, sadly, this mistake is so common that it is almost idiomatic.
The authors encourage the use of 'Hungarian' notation; while its usefulness is debatable, it is at least applied consistently throughout the code.
The Matlab tutorial is much shorter than the C tutorial, but is kept in the same readable style. Again, the exercises are well thought out and relevant to the audience. While my personal experience with Matlab is limited, the technical content seems fine and the tutorial should be more than sufficient to turn the reader into a productive Matlab user.
The Java tutorial is only slightly longer than the Matlab one (155 vs. 127 pages) and it covers a lot of ground. After rushing through the basic concepts of Object Orientation, it covers most of the core of the Java language, including applets and application, as well as the Abstract Windowing Toolkit (AWT). This means that, by necessity, some of the explanations are a little shorter than I feel they should be for a tutorial. The space taken by the very brief appendices on introducing Unix and the C standard library could have been put to better use here.
The source code for the examples can be downloaded from the authors' web site athttp://www.isr.umd.edu/~austin/book.html
In summary, this book attempts to cover an awful lot of material in limited space and, as a result, sometimes falls short of its aims. Like most technical books, it would also have benefited from some further technical review. That notwithstanding, a knowledgeable lecturerunfortunately those are few and far between which sort of vitiates the rest of this sentence - Francis should easily be able to circumvent its small shortcomings in a taught course and for£22.50 it provides excellent value for money.