Author: Nell Dale & John Lewis
Publisher: Jones & Bartlett
Audience: Undergraduate students
Reviewer: Mike James
A gentle introduction to computer science - just what a lot of people are looking for.
But before you read on you need to know that the list price of this textbook is a crazy $122.95. It is well produced on good paper with full color and there is lots of backup in the form of online code and a year-long subscription to a companion website, but this is a very high price for a book on the standard topics of computing.
The high price is a shame, because this book could appeal to lots of self study readers, not just college course takers. It starts off with a slow-paced look at computing in a social context and then works its way though number systems, data representation, gates and logic and the overall design of a computer. The pace is slow, but it's about right if you are new to the material.
There are also boxouts on the social implications of computing which, while occasionally interesting, seemed completely out of place. Yes, it is needed because of the typical curriculum, but why do we have to have social science, ethics and so on pushed into a course on computer science? Do philosophy majors have computer science forced upon them as a side story? It's time we got back to the idea of "orthogonality" in courses and stopped polluting one course with the ideas of another with all of the wasteful repetition it entails.
The programming section of the book begins with the introduction to a machine language for a machine that doesn't exist. However software is provided so you can try it out. It is a great idea and a good way to learn assembler. There are the usual arguments that it would be better to use the assembly language of a real machine but the only real machine that counts at the moment is the x86 and this isn't and easy architecture to learn for a beginner.
The software section continues with a look at problems solving methods - divide and conquer and the usual algorithms - sorting, searching and so on. The final chapters of the section look at abstract data types - trees, stacks and so on - and object oriented ideas.
The Next section tackles the operating system and deals with the usual topics of batch, timesharing, CPU scheduling, file systems and so on. The section on the application layer is perhaps the least effective, mainly because it is a difficult and ever changing area. It explains about data processing, AI, simulation and graphics and so on. The final section deals wit communications - networks, the web and finally computer security. The book rounds off with a conclusion.
If you read this book from cover to cover then you will have a good grounding in computing. You will even have a brief look at academic computer science - Turing machines and computability - but only in the final chapter. You also don't really get to learn to program as part of the course but this is supposed to be about computer science.
As the basis for a course on the topic of computing it would make an excellent choice. It's also suitable for self study apart from its high price. It is, however, well written, well produced and well supported.