Computer science

Catering for varied tastes is a balance between giving people what they want and introducing them to new flavours. Harold Thimbleby enjoys the staples but craves something different

May 23, 2013

Books are food for the mind, and like food they come in many flavours. We like sweet food, but too much makes us obese. We like salty food, which adds flavour to everything, but too much makes us thirsty and we get high blood pressure. Nobody knows what flavour umami is, but we have taste receptors for it on our tongue; it is such a new discovery we do not have any metaphors based on it. My wife is sweet, and I might be a salty character, but who is umami?

Likewise textbooks. There are extremely popular books, running into their umpteenth editions because students love them. Then there are salty books, usually new titles, which authors or publishers think add flavour to our lives. And there are umami books, which are so new we have not started thinking much about them. Of the titles sent to Times Higher Education, there are many sweet and salty books, but no umami books.

Now in its 14th edition is ­Morley and Parker’s immensely popular Understanding Computers: Today and Tomorrow, a truly comprehensive introduction. It has remained timely, authoritative and interesting. It is readable and well designed, has interesting interviews with experts, and deserves its mass-market popularity. I am not sure who needs to read it, however, as it tells you “everything” up to foundation computer science level. It would perhaps be perfect for a student from the developing ­world who has not grown up around computers, or for anyone forced to change fields into computer science, but it is hard to imagine any degree student in computer science who would not already know 90 per cent of it.

Woods and Dorin’s HTML5 and CSS says everything about websites in a clear way, and could be used for self-taught students or as an introductory programming course, given its coverage of Java­Script and the DOM; naturally, it has plenty of online and instructor material. It is into its seventh ­edition, and is improving all the time thanks to readers’ feedback.

Which programming language to teach first is always a controversial decision. The Massachusetts Institute of Technology is moving to Python (as I learned from reading Understanding Computers) but if you are going to use Java, then Farrell’s Java Programming is an excellent place to start. So good, in fact, that it adds another way to argue about which language to teach: which language has the best textbook? It is also in its seventh edition, starts from scratch and covers almost everything you need to know. It is notable for having many excellent learning features (including games to program and online resources) and places a welcome emphasis on student research to find answers. It also has a plentiful supply of material for instructors.

We would all prefer students to have a healthy diet. How, then, do we move them from the attractive sweets to the more savoury topics in computer science?

Some of the most popular programming languages are obese, and it seems to me that their inventors never went on a compiler course. The material covered in Grune et al’s Modern Compiler Design is high on my list of things students should learn before they are allowed to graduate. But the book’s major strength is also its weakness: it runs to 822 pages and covers everything, too much for any normal university module, to say nothing of its roughly £70 price tag. On the other hand, treat it like a menu and the class can choose what it wants to explore.

Behind everything is mathematics; even in a restaurant, you have to check the bill. Pace’s Mathematics of Discrete Structures for Computer Science is a delightful book, written to be read and enjoyed as it moves from justifying the central place of maths in computing, through the usual set theory and logic, on to numbers, types and the halting problem. But where Pace is never far from real computer science problems, Sipser’s Introduction to the Theory of Computation provides a more traditional coverage: automata, languages and complexity. It is a polished, authoritative textbook – and, if you like the analogy, just because it is a bigger restaurant does not mean you need to eat ­everything on offer. In contrast, Ben-Ari’s Mathematical Logic for Computer Science does exactly what it says on the cover; of these three books, it is the most specialist, so for most of us it will only be part of a module rather than the whole thing – but getting students to read more than one book will give them a more varied diet.

Evidently, in computer science there is a big gap between what appeals to the mass market and what appeals to serious teachers with refined tastes. Back to the missing umami: it is disappointing that no publishers submitted books to THE covering the making movement. Perhaps they do not think it is “proper” computer science, but making is changing how people are learning computing: hands-on, building exciting things. The Raspberry Pi, the Arduino and the Make Controller Kit are computers you can program and connect to sensors and actuators to make real things ­happen, to say nothing of connecting to Leap Motion, Facebook, GPS and all the rest of the modern world. If we are not careful, design departments will take over from us, for these things are a seriously fun way into computer science – we risk making ourselves obsolete with our own advances.

Tap and scroll down for links to all Computer science textbooks
Or view PDF below

Register to continue

Why register?

  • Registration is free and only takes a moment
  • Once registered, you can read 3 articles a month
  • Sign up for our newsletter
Please Login or Register to read this article.