Opinion
Computing Applications Letters to the Editor

Code That Missed Mars

Posted
  1. Introduction
  2. Author's Response
  3. Yes, Teach Everybody to Code
  4. Learn from Long-Term U.K. MOOC Experience
  5. Toward Multidisciplinary Design Thinking
  6. References
  7. Footnotes
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 details—the initialize function and complete output of the model checker—the 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 university—The Open University, founded 1971—that 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 http://www.open.ac.uk/about/main/the-ou-explained/history-the-ou. 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 http://www.computingatschool.org.uk/. 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

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, 59–73.

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

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

Join the Discussion (0)

Become a Member or Sign In to Post a Comment

The Latest from CACM

Shape the Future of Computing

ACM encourages its members to take a direct hand in shaping the future of the association. There are more ways than ever to get involved.

Get Involved

Communications of the ACM (CACM) is now a fully Open Access publication.

By opening CACM to the world, we hope to increase engagement among the broader computer science community and encourage non-members to discover the rich resources ACM has to offer.

Learn More