Sign In

Communications of the ACM

Letters to the Editor

Code That Missed Mars

View as: Print Mobile App ACM Digital Library Full Text (PDF) In the Digital Edition Share: Send by email Share on reddit Share on StumbleUpon Share on Hacker News Share on Tweeter Share on Facebook
Letters to the Editor


Gerard J. Holzmann's article "Mars Code" (Feb. 2014) demonstrated a nonblocking implementation of concurrent double-ended queues, or deques,1 (previously shown to be incorrect by Doherty2) to not work through an application of Holzmann's own Spin model checker. However, the demonstration seemed too shallow. Assuming the writer process of the test driver is allowed to pushRight(0) and pushRight(1) before the reader process gets a chance to run, then the value of rv returned by the first succeeding popRight() in the reader process would definitely not be 0 and the assert(rv==i) would fail because i is 0; that is, the test driver is incorrect and could fail, even with a correct implementation of concurrent deques.

Holzmann's demonstration included a description of a failing run of his test driver exercising the concurrent deque implementation. Even though Holzmann clearly left out some detailsthe initialize function and complete output of the model checkerthe failing run he described was definitely much simpler than the failure described by Doherty,2 indicating the failure detected was in the test driver, not in the concurrent deque implementation.

Thorkil Naur, Odense, Denmark

Back to Top

Author's Response

Naur is correct, and I thank him for his keen observation. The test driver used for the example was flawed. If we make the required changes we can show it takes minimally three processes to expose the bug in the original DCAS algorithm,1 as was also shown in Doherty.2 A corrected version of the example, with the model-checking result, is available from the author.

Gerard J. Holzmann, Pasadena, CA

Back to Top

Yes, Teach Everybody to Code

As explored in Esther Shein's news story "Should Everybody Learn to Code?" (Feb. 2014), educators should indeed teach everybody to code, even if not all become programmers. After all, throughout the English-speaking world, we aim to teach everybody to write good English, even though we do not expect all of them to write novels for a living.

William Clocksin, Hatfield, U.K.

Back to Top

Learn from Long-Term U.K. MOOC Experience

I keep reading about U.S. initiatives involving massively open online courses, or MOOCS, and computer science education in schools, as in Andrew McGettrick's Letter from the Chair of Education Board "Education, Always" (Feb. 2014) and Tim Bell's Viewpoint "Establishing a Nationwide CS Curriculum in New Zealand High Schools" (Feb. 2014). Here, I would like to point out the U.K. has had a distance-education universityThe Open University, founded 1971that has made ample use of appropriate technology and is well worth looking at if you want to benefit from a long-running, successful, high-quality system; for a condensed history of this so-called "University of the Air," see I would also like to point to England's more recent but equally successful campaign called "Computing At School" to introduce and scale out teaching computer science for all schoolchildren; see All can likewise share quite a bit of useful experience there, too.

Jon Crowcroft, Cambridge, England

Back to Top

Toward Multidisciplinary Design Thinking

In his Viewpoint "Toward a Closer Integration of Law and Computer Science" (Jan. 2014), Christopher S. Yoo raised an important point about how the law and technological change interact but emphasized only one dimension of what could be called the "social embedding" of technology. Legal concerns are an important aspect of software design, especially if the software stores and processes sensitive personal data about users. However, in order to increase the acceptability and acceptance of a software product, more aspects must be considered during development. Some (such as data privacy and usability) are well represented in most projects. Others (such as users trust in technology, incentives to participate in collective activities, inclusion of users with disabilities, and ethical and sociological challenges) have only begun to attract attention due to recent technological advancements (such as context-aware services, self-adaptive systems, and autonomously acting agents). The crucial point for software developers is these aspects of social embedding could lead to conflicting software design requirements, so should be addressed together in a systematic and integrated development process. Because society demands it, truly multidisciplinary design thinking will become increasingly important in the future.

Kurt Geihs, Kassel, Germany

Back to Top


1. Detlefs, D.L. et al. Even better DCAS-based concurrent deques. In Distributed Algorithms, LNCS Vol. 1914, M. Herlihy, Ed. Springer-Verlag, Heidelberg, Germany, 2000, 5973.

2. Doherty, S. Modelling and Verifying Non-blocking Algorithms That Use Dynamically Allocated Memory. Master's thesis, Victoria University, Wellington, New Zealand, 2004.

Back to Top


Communications welcomes your opinion. To submit a Letter to the Editor, please limit yourself to 500 words or less, and send to

©2014 ACM  0001-0782/14/04

Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and full citation on the first page. Copyright for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, to republish, to post on servers, or to redistribute to lists, requires prior specific permission and/or fee. Request permission to publish from or fax (212) 869-0481.

The Digital Library is published by the Association for Computing Machinery. Copyright © 2014 ACM, Inc.


No entries found