Computer programmers roll their eyes when they hear about anti-circumvention bans, SOPA, Pakistani disruption of the DNS to carry out censorship, and similar incursions of government officials into the domain that computer nerds claim as their own. One often hears technologists say, “If those policy-makers knew a thing or two about the Internet…” Well, renowned Unix researcher Brian W. Kernighan has been working for years to see that they do, and now he has written a book called D is for Digital: What a well-informed person ought to know about computers and communications to offer his take on the basics everyone should know.
I got to know Brian when he contributed a chapter to O’Reilly’s book Beautiful Code, and he recently sent me a copy of D is for Digital. In Kernighan’s signature crystalline style, it lays out an array of topics from what bits are to how digital signatures work and the risks of Infrastructure as a Service cloud computing.
D is for Digital reflects the experience Brian has culled from years of teaching a course on computer concepts to non-technical students at Princeton University. In his course, he goes so far as to show short programs to help his audience appreciate how problems are turned into algorithms and the importance of good design and testing. The book contains very little code–just a few lines in one or two places to illustrate the concepts–but is weighted toward technical explanations to root Brian’s forays into social issues such as privacy.
His criteria for including topics focused on how they contributed to three overarching themes:
How computer hardware works
The ideas behind software (algorithms, and getting from the mathematical algorithm to an actual computer implementation)
How computers communicate, and the issues raised by the Internet
In fact, the book contains a few topics that I think the average citizen could manage without but that clearly occupy Brian’s interest, such as the layout of a typical filesystem (modeled of course on Unix). I would have suggested starting with a plan that laid out much more detailed goals, and choosing topics that led up to a particular lesson.
For instance, the dreaded term “buffer overflow” has been aired enough to reach mainstream ears, so one could describe its behavior by explaining how commonly a program must step through an array, show an old for (i=0; i<1000; i++) loop in C, and explain how easy it would be to use a <= operator in place of <.
But these are ramblings of an editor. D is for Digital is a contemporary approach to issues that arise all the time when computing and the Internet are debated, and it could be a valuable tool in educating members of the general public, who wouldn’t be hurt any by knowing the basic layout of the Unix filesystem. They’d also learn what Flash cookies are doing on their computer, the value of open source software, and other topics that lead them to make different decisions in the public sphere.