You are here

Computational Thinking

Paolo Ferragina and Fabrizio Luccio
Publication Date: 
Number of Pages: 
[Reviewed by
Allen Stenger
, on

This is an introduction to the design and analysis of algorithms, that resembles many introductory textbooks except that it is pitched very low. It would be suitable for bright high-school students, and for college students who are not computer science majors. The mathematical and computer science prerequisites are almost nil. The book is not a text itself, because it has no exercises, and it could even be thought of as a “popular computer science” book. I think the book has a good balance of breadth and depth. Algorithm design and analysis are very deep and complex subjects, and the book does a good job of skimming and giving you the flavor of them.

The book is organized by application or problem area rather than by algorithm type, and covers a good variety of topics in a small space. It leans toward areas that have caught the public imagination, such as Big Data, web search, and cryptography. In each subject area the problem is described first, followed by a text description of algorithms to solve it, and completed with one or more pseudocode listings. Most of the content is in the text, and it’s not necessary to study the pseudocode. For those who really like code, there’s also a companion web site that includes Python implementations of all the algorithms.

A few terms are misused or defined incorrectly. On p. 35 “forex robot” is used to describe automatic trading on stock exchanges; in fact this is for currency trading (forex = foreign exchange). On p. 45 and others Moore’s Law is misquoted as saying that the performance of computers doubles every 18 months; in fact Moore’s Law is much more specific and says that number of transistors in a dense integrated circuit doubles about every two years or 18 months. On p. 51 the terms modularity and module are used to describe modular arithmetic. On p. 111 the term spamming is misused to describe using false web content to improve search engine rankings, rather than to mean unsolicited and undesired electronic messages.

I would have liked to see a list of books for further reading. As it stands, the book is very isolated: it doesn’t reference any other books, and doesn’t mention any of the big names in computer science except if there is an algorithm named after them.

Allen Stenger is a math hobbyist and retired software developer. He is an editor of the Missouri Journal of Mathematical Sciences. His personal web page is His mathematical interests are number theory and classical analysis.

See the table of contents in the publisher's webpage.