2.0 out of 5 stars
Rather poor and out of date, 10 Dec 2010
To be fair I should have reviewed this book much earlier. But, as it was written in 2003 I will take this into consideration when I write the review.
The first impression I had was that this is an attractive book, in that it has a nice cover and the text has an agreeable layout. It is only when you take time to read the book that you can see what the problems are. For the sake of this review I will concentrate on 3 chapters - (2) Computer Systems, (4) Introduction to software development, and (13) Database management systems as I have taught these areas at some time in the past.
(1) Computer Systems
This chapter starts with looking at how information was recorded in the distant past and then moves on to number systems starting with Roman Numerals. I think the point of this is to get the students to think about how difficult it is to do certain things if you have a method of writing or a number system that is difficult to work with. It then moves onto a much more relevant topic of number systems for computers - binary etc.
Throughout the text there are coloured boxes - with the heading "What does it mean?". It seams to me that they are trying to emulate the format of the "for dummies" series of books. Some of the questions asked are both relevant and useful.
The tables showing you how to do conversions and manipulate numbers are quite useful and quite well done. But, then there are sections that are possibly irrelevant and poorly done. On page 48 you have a heading "Fetch-execute cycle", but it is not until page 56 that you are told anything relevant about the fetch-execute cycle. And even here the topic is treated in a very superficial and trivial way. It reminds me of the Monty Python sketch where they are supposed to be teaching you how to play the flute - you are simply told that you need to blow down one end and move your fingers over the holes.
Instead, in this section you are told about logic and logic gates by means of Venn diagrams. How helpful is this? In this section they mention the term Universe to denote the are or domain of interest. If I were to be pedantic, I would point out that "there is no Universe". See "Naive Set Theory" (Paul Halmos p6-7). The section on truth tables is much more useful, and should possibly have been the starting point. But, I suppose the authors wanted to include a historical context. If that is the case, why not mention the contribution by Ludwig Wittgenstein (ref Tractatus Logico-Philosophicus 1923)
Finally, there is a diagram of the main components of a computer system, and on p58 I can see something that resembles the fetch-execute cycle but it is done in such a way that is horribly complicated as if it is being taught by rote.
(4) Introduction to software development
It is in this chapter that you realise that the material in this book is seriously dated. It also includes the use of case studies which feature in other chapters in the book as well. The examples used in this book are really trivial, and it is possibly for this reason why they can get away with designs that use flow-charts. Flow charts have no place at all in the design of a high-level program. If you choose to use the procedural paradigm to program you should be using a methodology that emphasises high-level structures - e.g. JSP or some other method that uses pseudo-code or structure charts.
The choice of programming language is also inappropriate, as many would consider Pascal a dead language. If you insist on writing procedural style programs, why not use C++, as you can write procedural style programs here as it is a hybrid language. However, unlike pascal, there will be some transferable skills that will useful in higher education. Since 2002, free C++ IDEs have been available.
This chapter concludes by looking at documentation and testing. Like the other parts of the chapter it is far too short. Based on the programs that I have seen in this chapter, I would not expect any students that have used this book to be able to write a useful program unless they have a good teacher who teaches them far more than is present here.
(13) Database Management systems
It starts off with a section called "Normalised relational databases"
Firstly, I should point out that the spelling should be "Normalized". See "Oxford Dictionary of Computing".
Secondly, you cannot have a relational database that is not normalized. This is because an essential property of a relation or table is that all data attributes in each and every row are atomic. If this property is satisfied for all the tables we say that the database is in First Normal Form (1NF). A relational database is made up of one or more tables.
The definition of a flat-file database, is one that is been pushed by exam boards such as Edexcel. It is however wrong. In the original sense, whether a database is a flat-file database depends on the shape of the data. In the case of a relational database, each table is flat, unlike the data in a hierarchical or network database.
On page 274 it states that "A primary key is an attribute or group of attributes that uniquely identifies a tuple". This definition is insufficient, as any key can uniquely determine a tuple or row in a table. You could for instance list all the arributes in a row. This will uniquely determine the row, but is not a primary key - it is a super key. If you require that your key is a minimal key, you could possibly have two or more candidate kets for a primary key. The one you don't choose is called the alternate or secondary key.
So far in this chapter, it would appear that I am nit-picking. My main dislike of this chapter, is that they haven't mentioned normalization, and the book fails to show how you can convert your database to the higher normal forms in a satisfactory way. This book makes use of ER diagrams. This is not a good way to normalize data. The only satisfactory way of doing this is to introduce functional dependencies. You can then partition your tables by inspecting your functional dependencies. Some may argue that this is too difficult for this level of study. I would disagree and can state that I have successfully used this technique with A-level computing students.
In this chapter there follows a number of pages telling you how you can implement your database in Access. One good point is that they introduce SQL for the queries rather than QBE. However this section is far too brief to be really useful.
If I were ever to teach this type of course again, which I doubt because there are many things that I would disagree with, I certainly would not use this book, nor would I recommend that any of the students buy a copy. There are many things that I find about this book to be illogical, poorly presented, and in some cases wrong. A book should be interesting, easy to follow and should include relevant material that people can use to educate themselves.