On the Cruelty of Really Teaching Computer Science

Last updated

"On the Cruelty of Really Teaching Computing Science" is a 1988 scholarly article by E. W. Dijkstra [1] which argues that computer programming should be understood as a branch of mathematics, and that the formal provability of a program is a major criterion for correctness.

Contents

Despite the title, most of the article is on Dijkstra’s attempt to put computer science into a wider perspective within science, teaching being addressed as a corollary at the end. Specifically, Dijkstra made a “proposal for an introductory programming course for freshmen” that consisted of Hoare logic as an uninterpreted formal system.

Debate over feasibility

Since the term "software engineering" was coined, formal verification has almost always been considered too resource-intensive to be feasible.[ citation needed ] In complex applications, the difficulty of correctly specifying what the program should do in the first place is also a common source of error. Other methods of software testing are generally employed to try to eliminate bugs and many other factors are considered in the measurement of software quality.

Until the end of his life, Dijkstra maintained that the central challenges of computing hadn't been met to his satisfaction, due to an insufficient emphasis on program correctness (though not obviating other requirements, such as maintainability and efficiency). [2]

Pedagogical legacy

Computer science as taught today does not follow all of Dijkstra's advice. The curricula generally emphasize techniques for managing complexity and preparing for future changes, following Dijkstra's earlier writings. These include abstraction, programming by contract, and design patterns. Programming techniques to avoid bugs and conventional software testing methods are taught as basic requirements, and students are exposed to certain mathematical tools, but formal verification methods are not included in the curriculum except perhaps as an advanced topic. [3] So in some ways, Dijkstra's ideas have been adhered to; however, the ideas he felt most strongly about have not been.

Newly formed curricula in software engineering have adopted Dijkstra's recommendations. The focus of these programs is the formal specification of software requirements and design in order to facilitate the formal validation of system correctness. In Canada, they are often accredited engineering degrees with similar core competencies in physics-based engineering. [4]

Related Research Articles

<span class="mw-page-title-main">Computer science</span> Study of computation

Computer science is the study of computation, information, and automation. Computer science spans theoretical disciplines to applied disciplines. Though more often considered an academic discipline, computer science is closely related to computer programming.

<span class="mw-page-title-main">Edsger W. Dijkstra</span> Dutch computer scientist (1930–2002)

Edsger Wybe Dijkstra was a Dutch computer scientist, programmer, software engineer, and science essayist.

Software engineering is an engineering-based approach to software development. A software engineer is a person who applies the engineering design process to design, develop, test, maintain, and evaluate computer software. The term programmer is sometimes used as a synonym, but may emphasize software implementation over design and can also lack connotations of engineering education or skills.

Software crisis is a term used in the early days of computing science for the difficulty of writing useful and efficient computer programs in the required time. The software crisis was due to the rapid increases in computer power and the complexity of the problems that could not be tackled. With the increase in the complexity of the software, many software problems arose because existing methods were inadequate.

<i>Structure and Interpretation of Computer Programs</i> Computer science textbook

Structure and Interpretation of Computer Programs (SICP) is a computer science textbook by Massachusetts Institute of Technology professors Harold Abelson and Gerald Jay Sussman with Julie Sussman. It is known as the "Wizard Book" in hacker culture. It teaches fundamental principles of computer programming, including recursion, abstraction, modularity, and programming language design and implementation.

<span class="mw-page-title-main">MIT OpenCourseWare</span> Web-based publication of MIT course content

MIT OpenCourseWare is an initiative of the Massachusetts Institute of Technology (MIT) to publish all of the educational materials from its undergraduate- and graduate-level courses online, freely and openly available to anyone, anywhere. The project was announced on April 4, 2001, and uses Creative Commons Attribution-NonCommercial-ShareAlike license. The program was originally funded by the William and Flora Hewlett Foundation, the Andrew W. Mellon Foundation, and MIT. MIT OpenCourseWare is supported by MIT, corporate underwriting, major gifts, and donations from site visitors. The initiative inspired a number of other institutions to make their course materials available as open educational resources.

<span class="mw-page-title-main">Gerald Jay Sussman</span> American computer scientist

Gerald Jay Sussman is the Panasonic Professor of Electrical Engineering at the Massachusetts Institute of Technology (MIT). He has been involved in artificial intelligence (AI) research at MIT since 1964. His research has centered on understanding the problem-solving strategies used by scientists and engineers, with the goals of automating parts of the process and formalizing it to provide more effective methods of science and engineering education. Sussman has also worked in computer languages, in computer architecture, and in Very Large Scale Integration (VLSI) design.

The following outline is provided as an overview of and topical guide to software engineering:

<span class="mw-page-title-main">Hal Abelson</span> American mathematician

Harold Abelson is the Class of 1922 Professor of Computer Science and Engineering in the Department of Electrical Engineering and Computer Science at the Massachusetts Institute of Technology (MIT), a founding director of both Creative Commons and the Free Software Foundation, creator of the MIT App Inventor platform, and co-author of the widely-used textbook Structure and Interpretation of Computer Programs, sometimes also referred to as "the wizard book."

Computer science and engineering (CSE) is an academic program at many universities which comprises scientific and engineering aspects of computing. CSE is also a term often used in Europe to translate the name of engineering informatics academic programs. It is offered in both undergraduate as well postgraduate with specializations.

Harlan D. Mills was Professor of Computer Science at the Florida Institute of Technology and founder of Software Engineering Technology, Inc. of Vero Beach, Florida. Mills' contributions to software engineering have had a profound and enduring effect on education and industrial practice. Since earning his Ph.D. in Mathematics at Iowa State University in 1952, Mills led a distinguished career.

<span class="mw-page-title-main">Phase portrait</span> Plot of a dynamical systems trajectories in phase space

In mathematics, a phase portrait is a geometric representation of the orbits of a dynamical system in the phase plane. Each set of initial conditions is represented by a different point or curve.

Maurice Peter Herlihy is a computer scientist active in the field of multiprocessor synchronization. Herlihy has contributed to areas including theoretical foundations of wait-free synchronization, linearizable data structures, applications of combinatorial topology to distributed computing, as well as hardware and software transactional memory. He is the An Wang Professor of Computer Science at Brown University, where he has been a member of the faculty since 1994.

Douglas Taylor "Doug" Ross was an American computer scientist pioneer, and chairman of SofTech, Inc. He is most famous for originating the term CAD for computer-aided design, and is considered to be the father of Automatically Programmed Tools (APT), a programming language to drive numerical control in manufacturing. His later work focused on a pseudophilosophy he developed and named Plex.

Arie Nicolaas Habermann, often known as Nico Habermann, was a noted Dutch computer scientist.

OpenCourseWare (OCW) are course lessons created at universities and published for free via the Internet. OCW projects first appeared in the late 1990s, and after gaining traction in Europe and then the United States have become a worldwide means of delivering educational content.

The Tufts OpenCourseWare (OCW) project, was a web-based publication of educational material from a number of Tufts University courses, providing open sharing of free, searchable, high-quality course content to educators, students, and self-learners throughout the global community. The Tufts OCW initiative encouraged the publication and free exchange of course materials on the World Wide Web. First launched in June 2005, Tufts OCW provided materials with strong representation from Tufts' health sciences schools, some of which were equivalent to textbooks in depth. All materials on the Tufts OCW site were accessible and free of charge. As Tufts OCW is not a distance learning program, no registration, applications, prerequisites, or fees are required and no credit is granted. Tufts ended funding for its Open Courseware initiative in 2014, and content on the Tufts OCW web site was removed on June 30, 2018.

Larry Joseph Stockmeyer was an American computer scientist. He was one of the pioneers in the field of computational complexity theory, and he also worked in the field of distributed computing. He died of pancreatic cancer.

<span class="mw-page-title-main">Nir Shavit</span> Israeli computer scientist

Nir Shavit is an Israeli computer scientist. He is a professor in the Computer Science Department at Tel Aviv University and a professor of electrical engineering and computer science at the Massachusetts Institute of Technology.

<span class="mw-page-title-main">Sow-Hsin Chen</span> Taiwanese physicist (1935–2021)

Sow-Hsin Chen, was a Hoklo Taiwanese physicist and Professor Emeritus at Massachusetts Institute of Technology (MIT). He was a recognized pioneer in the research of the dynamic properties of supercooled and interfacial water with the use of neutron scattering techniques. As an educator, he was recognized for his training of young scientists in the use of those same techniques. Regarding hydrogen storage, his research focused on the use of activated carbon to allow hydrogen to be stored at room temperature.

References

  1. Dijkstra, Edsger W. On the Cruelty of Really Teaching Computing Science (EWD-1036) (PDF). E.W. Dijkstra Archive. Center for American History, University of Texas at Austin. ( transcription )
  2. Dijkstra, Edsger W. The end of Computing Science? (EWD-1304) (PDF). E.W. Dijkstra Archive. Center for American History, University of Texas at Austin. ( transcription )
  3. MIT Courses :
  4. "Software Engineering Programs Are Not Computer Science Programs" (PDF). Archived from the original (PDF) on 2013-09-27. Retrieved 2012-10-30.