The Cruelty of Really Teaching Computer Science

The Cruelty of Really Teaching Computer Science

The Cruelty of Really Teaching Computing Science” is a 1988 paper by E. W. Dijkstra, 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.

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” thatconsisted of Hoare logic as an uninterpreted formal system.

Debate over feasibility

In modern software engineering practice, formal verification is almost always considered too resource-intensive to be feasible. 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 eliminate bugs and many other factors are considered in the measurement of software quality.

The notion that cost of production should be a constraint in programming was foreign to Dijkstra. He viewed the cost controls as artifacts that could become excuses and the controls of nature as nonexistent in digital systems, which above the level of circuits guarantee a second, constructed nature.Fact|date=February 2007

Dijkstra, to the end of his life, maintained that computing’s central challenges hadn’t been met to his satisfaction, due to an insufficient emphasis on the program correctness (though not obviating other requirements, such as maintainability and efficiency). [See [http://www.cs.utexas.edu/users/EWD/transcriptions/EWD13xx/EWD1304.html EWD 1304 - The end of Computing Science?] ]

Pedagogical legacy

Computer science as taught today generally does not follow Dijkstra's advice. It generally emphasizes techniques for managing complexity and preparing for future changes. 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. [See e.g. http://web.mit.edu/6.170/www/lectures/lectures.html, and courses 6.001, 6.033, 6.042, 6.170 (requirements for undergraduate CS majors) descriptions in the MIT Course Catalog at http://student.mit.edu/catalog/m6a.html]

There is also greater emphasis on the social aspects of programming, such as learning how to engineer as part of a team, and how to write code that is easily re-used by other people.Fact|date=February 2007 Some institutions focus more on practical engineering skills, such as learning popular programming languages or how to use commonly available tools, rather than the underlying theory of computer science.Fact|date=February 2007

References

External links

* [http://www.cs.utexas.edu/users/EWD/ewd10xx/EWD1036.PDF Handwritten manuscript] in PDF format.
* [http://www.cs.utexas.edu/users/EWD/transcriptions/EWD10xx/EWD1036.html Transcription]


Wikimedia Foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Look at other dictionaries:

  • On the Cruelty of Really Teaching Computer Science — “On the Cruelty of Really Teaching Computing Science” is a 1988 paper 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… …   Wikipedia

  • List of education topics — This is a list of education topics. See also: Education, , and the List of basic education topics.: External link: [http://tools.wikimedia.de/ daniel/WikiSense/CategoryTree.php? wikilang=en wikifam=.wikipedia.org m=a art=on userlang=en… …   Wikipedia

  • Edsger W. Dijkstra — Edsger Wybe Dijkstra Born May 11, 1930(1930 05 11) Rotterdam, Netherl …   Wikipedia

  • Component-based software engineering — A simple example of two components expressed in UML 2.0. The checkout component, responsible for facilitating the customer s order, requires the card processing component to charge the customer s credit/debit card (functionality that the latter… …   Wikipedia

  • Three-letter acronym — A three letter acronym, three letter abbreviation, or TLA is an acronym, abbreviation, alphabetism or initialism consisting of three letters. These are usually the initial letters of words of the phrase abbreviated, and are written in capital… …   Wikipedia

  • March to the Stars —   …   Wikipedia

  • Fear of youth — The irrational fear of youth is called ephebiphobia. [Fletcher, A. (2006) [http://www.commonaction.org/WYVD.pdf Washington Youth Voice Handbook] . CommonAction. p 9.] First coined as the fear and loathing of teenagers, [Astroth, K. (1994) Beyond… …   Wikipedia

  • literature — /lit euhr euh cheuhr, choor , li treuh /, n. 1. writings in which expression and form, in connection with ideas of permanent and universal interest, are characteristic or essential features, as poetry, novels, history, biography, and essays. 2.… …   Universalium

  • performing arts — arts or skills that require public performance, as acting, singing, or dancing. [1945 50] * * * ▪ 2009 Introduction Music Classical.       The last vestiges of the Cold War seemed to thaw for a moment on Feb. 26, 2008, when the unfamiliar strains …   Universalium

  • education — /ej oo kay sheuhn/, n. 1. the act or process of imparting or acquiring general knowledge, developing the powers of reasoning and judgment, and generally of preparing oneself or others intellectually for mature life. 2. the act or process of… …   Universalium

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”