The other day a non-CS friend remarked to me that since computer science is a quantitative, technical discipline, most issues probably have an obvious objective truth. Of course this is not at all the case, and it is not uncommon to find major disagreements even when all parties are apparently reasonable and acting in good faith. Sometimes these disagreements spill over into the public space.
The purpose of this post is to list a collection of public debates in academic computer science where there is genuine and heartfelt disagreement among intelligent and accomplished researchers. I sometimes assign these as reading in class: they are a valuable resource for a couple of reasons. First, they show an important part of science that often gets swept under the rug. Second, they put discussions out into the open where they are widely accessible. In contrast, I’ve heard of papers that are known to be worthless by all of the experts in the area, but only privately — and this private knowledge is of no help to outsiders who might be led astray by the bad research. For whatever reasons (see this tweetby Brendan Dolan-Gavitt) the culture in CS does not seem to encourage retracting papers.
N-version programming is a software development method where several implementations of a specification are run in parallel and voting is used to determine the correct result. Knight and Leveson wrote a papershowing that the assumption of independent faults in independent implementations may not be a good one. This finding did not sit well with the proponents of n-version programming and while I cannot find online copies of their rebuttals, Knight and Leveson’s reply to the criticismsincludes plenty of quotes. This is great reading, a classic of the genre.
Starting in the late 1980s, Ken Birman’s group was advocating causal and totally ordered multicast. Cheriton and Skeen were less than impressed and wrote 15 pages to that effect. Then we have Birman’s 32-page response to the criticisms. Also see Neha Narula’s take on the debate.
This 1991 paperintroduced log-based filesystems. In 1993 Seltzer et al. published this paperdescribing and evaluating an implementation of a log-based filesystem, and this followup in 1995. John Ousterhout, one of the authors of the original paper, disagreed with the evaluation. Seltzer and her coauthors rebutted his critique, and Ousterhout had, as far as I know, the last word.
Linus v Tanenbaumon the merits of microkernels is another classic. Also see some (one-sided) comments on a reincarnation of the debate here. Related, Hand et al. published a paper Are Virtual Machine Monitors Microkernels Done Right?; in response, Heiser et al. wrote a paper with the same titlebut coming to the other conclusion.
Social Processes and Proofs of Theorems and Programsis a provocative opinion piece about the role of formal methods in software development. Dijkstra called it “a very obnoxious paper” ( see page 14 of this transcript) and wrote a response called “ On a Political Pamphlet from the Middle Ages.” DeMillo et al. replied: “We must begin by refusing to concede that our confidence in a piece of real software has ever been increased by a proof of its correctness…” See Victor Yodaiken’s take on this debate.
Sticking with Dijkstra, he and John Backus had a (only partially public) spat, nicely written up here.
I’d like to fill any holes in this list, please leave a comment if you know of a debate that I’ve left out!
Here are some more debates:
Software-based attestationoffers a protocol for checking that a remote system contains the memory image that we expect it to have. On the Difficulty of Software-Based Attestation of Embedded Devicespresents concrete attacks on SWATT. Perrig and van Doorn did not agree that the attacks were validand, finally, Francillon et al. responded to the refutation.