*The Logician and the Engineer: How George Boole and Claude Shannon Created the Information Age* by Paul J. Nahin

How well does the mythical average person on the street know about the great scientists and engineers of the past? The list is probably quite small, maybe Einstein and perhaps Newton. The person interested in science and technology could probably list off a few more: Mendeleev, Babbage, Schrodinger, Ford. Less likely to be known are George Boole and Claude Shannon, unless you happen to be quite interested in electronic engineering. And yet it is their innovations that are at the root of the computational revolution and so their names should perhaps ring out a bit louder (I don’t put much weight behind the Great Man theory of history, but credit where it’s due).

*The Logician and the Engineer* refer to Boole and Shannon respectively and begins with a short biography about both men, although that is not the main point of the book. Rather, it is their ideas, namely Boolean logic and its application to electronic circuity, that gets the main focus, so look elsewhere for a thorough life and times.

The meat of the book beings with an explanation of Boolean algebra, which is fairly straightforward. Operators like NOT, AND, OR, and XOR are introduced, as well as tools like truth tables and Karnaugh maps which are used for logical simplification (the book is not of course a textbook, so I don’t know how well somebody who had not seen them before would be able to readily use them in practice having only read this cursory treatment).

Logic switching circuits is the subject of the next chapter, or more explicitly how to translate the calculation of Boolean functions into electrical circuits. This was the major contribution of Shannon, who wrote about it in his master’s thesisÂ *A Symbolic Analysis of Relay and Switching Circuits*. Logic operation implementations have changed over time, so rather than build up a working theory of transistors, Nahin goes back to the source and like Shannon employs electromechanical relays in the construction of logic gates. For somebody like me this was a treat to see a familiar subject presented in a different (much older) light, though I wonder if it’s any help for somebody totally new to the subject (yes, transistors are a little weird, but currents generating magnetic effects are also a little weird!). Still, a relay is physically opening or a closing a switch, so it probably is more familiar and therefore the better choice for exposition.

However, relays, being mechanical in nature, are also prone to failure especially when you build up a system using thousands of them. Nahin introduces elements of probability and then we see how Shannon employed these notions in trying to design circuits that would be more fault-tolerant in regard to relays (a simple example is replace an individual relay with two in parallel so that if one goes bad there’s still a path through the circuit).

Relays breaking isn’t the only source of error, however, as noise can be injected when messages are passed through a medium (say from one system down a telegraph line to another system). Again, Shannon (and others it should be said) wrote about how to design circuits that would detect errors (error-detection logic) and even how to correct them (error-correction logic). Between the implementation of Boolean logic via circuits and also showing how to design for reliability (both in terms of components and signals), Shannon really deserves major kudos for our modern information world.

The next chapter deals with a major innovation, that of devising circuits with memory (sequential logic). Between that and the previously discussed topics (combinatorial logic), you have all the working ingredients for a computer. Latches, flip-flops, and state diagrams are introduced (there’s a surprising amount of ground covered for a 200 page book).

We then move on to more abstract topics, beginning with Turing machines. I won’t drown this review by discussing what Turing machines are here (that could take a book in itself), but their theory is discussed as well as showing two implementations: an adder and the Busy beaver program. Finally, the very nature of what is computable is considered (with mention of Georg Cantor and countably versus uncountbly infinite sets). Nahin does call these last few chapters philosophical as compared to the more meat and potatoes engineering of the middle portion of the book.

Finally, things are cranked up to 11 with considerations of the fundamental limits of computation such as the von Neumann limit (more usually called Landauer’s limit I believe) and the thermodynamics of circuits and heat loss. Quantum logic and quantum computers are briefly introduced (these are connected to the main point of the book with considerations made about gates that are logically reversible). Lastly, there’s a rather pointless short story epilogue.

*The Logician and the Engineer* is a fairly short read that nevertheless covers a good many topics while also not being dumbed down and happily the mathematics is present in force (the mathematics of Boolean algebra is even more tame than the usual algebra, once you’re use to it). There’s a short appendix that introduces some basic electrical knowledge like Kirchoff’s laws, and if you know how to multiply a matrix by a vector none of the math should pose a problem. I’d recommend it to anyone interested in the history and theory of computers, and particularly I’d be interested in its reception by a high-schooler or college freshman interested in going into electrical engineering since, save for the lack of problems, it could almost serve as the text for an introduction digital logic course.