Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Great principles of computing
Denning P., Martell C., The MIT Press, Cambridge, MA, 2015. 320 pp. Type: Book (978-0-262527-12-5)
Date Reviewed: Jun 2 2015

Since computer science is the youngest science, its identity is not as clearly perceived as other, older sciences like chemistry, physics, biology, or geology. It is easily confused with consumer products or skill sets like network technology or programming. This short book superbly describes and defends the character of the discipline as a science. It does so in a matrix approach by identifying six major principles of computing, and then shows how these principles are made present in several major domains of application.

Readers must begin with the preface and the first two chapters on computing itself and on domains. Often prefaces and introductions are skipped over. Not here. The preface is where the six principles are first enumerated: communication, computation, coordination, recollection, evaluation, and design. The reader is urged to step away from the computer itself and focus on the process of computation as a new tool for discovery in science and a means of expressing new thoughts about science. Computing is a scientific domain in its own right, and its principal roles are to transform information and make machines solve problems through algorithms.

More detailed application areas follow in remaining chapters. Chapter 3 is on communication, which is described as the process of transferring information. Information entropy and control bits to preserve the integrity of messages in a noisy environment are the featured conceptual and technological topics of this chapter. The open philosophical question is whether computing is capable of generating new information. The fourth chapter is on computing machinery even though computer science is a field that has learned best how to handle abstractions. A historical approach is taken by surveying computational technology beginning with the abacus through Babbage’s machines and the WWII computers that evolved into the stored program machines described by von Neumann. More detailed discussions of stack machines and handling subprocedures and interrupts follow, concluding with performance issues of circuits, Moore’s law, and central processing units (CPUs) with multiple cores.

Chapter 5 is on programming, which many erroneously consider to be synonymous with computing. Programming is done using languages that can be described using Backus-Naur form (BNF) grammar. The translation of programs expressed in a programming language using compilers and interpreters into native code or into byte code for a virtual machine is briefly described. The central problem in all of programming is its high sensitivity to error. The sixth chapter discusses computation for solving problems, the reason for computer programming. The authors divide the universe of problems into four groups: easy (searching, sorting, matrix multiplication), hard (packing a knapsack or visiting all cities in a region), hard but verifiable (NP-complete, graph theory applications), and noncomputable (halting problem, handling paradoxes). The limits of computational complexity force the discipline to become experimental in understanding computation.

Chapters 7, 8, and 9 return to hardware-related issues. Chapter 7 discusses memory, how it must work with speedy processors, how it is addressed by name and location in the computer, how it may be protected from other processes taking place in the CPU, and virtual memory management. Chapter 8 is on parallelism. Not every process can be made entirely parallel. There are competing and cooperative processes. Preventing deadlocks and working with clocked systems in a parallel processing environment are major problems. Chapter 9 on queueing is related to parallelism and distributed systems. The theoretical foundations are queueing theory and Markov chains for understanding data flows.

The central chapter is the tenth, which is on design. On the one hand, design is the least technological of the group, yet many authors have enumerated many principles and guidelines of good design. Unfortunately, they are all after the fact. As the authors point out, “success of software design depends on the engineer’s skill, not formal mathematical analysis.” Software design is an art. It is a craft. There is a history of good design practice. Failing to recognize it or learn from it means that old mistakes will be repeated. Good designs have clear requirements, perform correctly, tolerate faults, are timely, and are fit to their ends.

The last formal chapter is on networks. The most familiar environment in which most computers are used is as a network appliance to conduct business, communicate, or entertain oneself. The network environment must be resilient. It is based on packet switching. It is easily reconfigurable, and it obeys computational protocols to work properly. The key flaw of network design is that it is based on the trust of other nodes. Trust permits abuses like malware or denial of service attacks.

The formal chapters are followed by an afterword that, like the preface, should be read. There are three lessons in the afterword: the transformational nature of computing, the empirical mindset of computer scientists, and, especially, the centrality of design. A chapter-by-chapter summary of the book follows the afterword, plus a section of notes and a bibliography organized by chapter.

This book should be required reading by all computer science and informatics students no later than their second year of study and by anyone else whose ideas of computer science, computing, or informatics suffer from narrowness of vision.

More reviews about this item: BCS

Reviewer:  Anthony J. Duben Review #: CR143489 (1508-0671)
Bookmark and Share
  Reviewer Selected
Featured Reviewer
 
 
General (H.0 )
 
 
General (C.0 )
 
 
General (D.0 )
 
Would you recommend this review?
yes
no
Other reviews under "General": Date
Introduction to database and knowledge-base systems
Krishna S., World Scientific Publishing Co., Inc., River Edge, NJ, 1992. Type: Book (9789810206192)
Nov 1 1993
An introduction to information science
Flynn R., Marcel Dekker, Inc., New York, NY, 1987. Type: Book (9789780824775087)
Apr 1 1988
Acta Informatica 19, 4 (Sept. 1983)
  Acta Informatica 44:1983. Type: Journal
Mar 1 1986
more...

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy