Google
 
   
Login
Username:

Password:


Lost Password?

Register now!
Search
Main Menu
top books
Polls
What do you think about php-deluxe.net?
Excellent!
Cool
Hmm..not bad
What the hell is this?
encyclopedia
recommendation
compare webbrowser
Freenet DSL
Who's Online
7 user(s) are online (7 user(s) are browsing encyclopedia)

Members: 0
Guests: 7

more...
browser tip
Unix Befehle
manual of unix befehle
recommendation!
Sponsored
partner

The Cruelty of Really Teaching Computer Science

The Cruelty of Really Teaching Computer 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 mathematical proof of a computer 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 states a proposal for an introductory programming course for freshmen that consists of Hoare logic as an uninterpreted formal system.

=Criticism=

Dijkstra s position was and is controversial among software engineering proponents. The paper triggered a discussion in 1990 in the Communications of the ACM because many computer science educators felt that Dijsktra s views were exclusionary of women, who, it was claimed, would be more interested in group projects and the use of software products, in place of the exacting demand, by Dijkstra, for formal, mathematical thought by individuals, who would then defend their programs and derivations to like-minded peers.

Dijkstra felt that really teaching computer science was imparting, to the student, the ability to work within formal systems and although he believed that computer science is applied mathematics, Dijkstra did not believe that the sobriquet applied weakens the cruelty , but rather that it makes it worse .

From real life , down to examples involving the linkage of railroad cars, Dijkstra throughout his career gave examples of how rigid formal constraints emerge from practical examples and as such presented a confusing picture. On the one hand, many people in the discussion and outside felt he was the very type of the ivory tower theorist, but on the other hand Dijkstra s methodology demanded that the practitioner, since computer science is applied math, do the math all the way down to program code and/or linking railroad cars in such a fashion to minimize trips to the loo.

This was strange to his audience because computer science, by 1990 a mature discipline, had become bifurcated itself into the practical and applied, and as a result of this bifurcation, many students were beginning to ask in good faith why they (to use a common complaint) had to learn how to write a compiler when so many compilers had been written.

They asked, in good faith, whether it wouldn t be better to learn how to interact as a team player and use the numerous software tools to solve problems, and why it was necessary to be so apparently arrogant as to appoint oneself to re-analyze the problem, all the way down .

Others framed computer science as a species of Engineering and pointed to the need for engineers to compromise on the one hand with the physical world and on the other with cost control. This view was foreign to Dijkstra as well after his initially positive reaction, in 1968, to the then-neologistic phrase software engineering because 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.

Dijkstra, to the end of his life, maintained that computing s central challenges haven t been met to his satisfaction because he seems to have had a very strong belief that the truth of computing (program correctness) should take pride of place. He didn t replace all other criterion of quality (such as maintainability and efficiency) with correctness; the view that he did derives from an inability to see how Dijkstra thought.

Dijkstra, it seems from the record, thought in a way derived from his early training and education, a traditional education in The Netherlands which was meant to prepare an elite (similar to that in France) not for technical tasks but for legislation and governance. This type of training in the ideal world requires the statesman to think in a way described as lexical in that the statesman (again in a terribly ideal world) satisfies Constitutional principles before other priorities , and the statesman doesn t do trade-offs that sacrifice core principles.

Dijkstra took this world-view (which is based in part on Immanuel Kant) into a technical career, and seems to have believed that program correctness was constitutional in that an incorrect program (or group solution) was worthless or even of negative worth.

His view seems to have been shared by earlier computer scientists: for example, in Gerald Weinberg s 1972 book The Psychology of Computer Programming , Weinberg related a story in which a programmer, proposing an elegant but inefficient solution, tells the author of the inelegant, efficient , and buggy solution, but your solution doesn t work: if the solution doesn t have to work, then Begin..End is a valid solution .

However, this worldview never became universal and in the name of controlling costs often invisible to the applied computer scientist, it has been replaced by trading-off correctness with getting it done in a way Dijkstra did not like.

At the bottom of Dijkstra s famous aphorisms and his cruelty article is sedimented a set of core ideas including the priority of computing truth, and also the assumption that the computer scientist, as such, will be a traditional subject (often called an intellectual ) who would not stop thinking when the thinking stepped beyond the needs of the institution or group. The fact that he also stressed the applied nature of computing merely shows that he hadn t learned to draw a bright line between opposed terms (such as pure and applied) which he may have felt, based on early exposure to Kant, were an organic unity: two things that die in isolation from each other.

Today, in most cases, computer science is taught very differently from the way in which Edsger would want. It is taught to students who have preselected themselves as numbers people where numbers are bifurcated from words and in some sort of opposition, and also as practical, hard headed people, concerned with securing their rights as part of an identity group in many cases (such as women).

Unfortunately, this fails to prepare many for the cruelty of writing, for example, a C programming language Compiler in C, and, the very act seems unnatural, and carrying coals to Newcastle in the problem formulation alone. At one and the same time, Dijkstra seems to have had no pity for these students, and a great deal.

Whether or not one agrees with Dijkstra, engaging his works as a form of computing philosophy is rewarding, and his battle over the Cruelty was, if not his finest hour (as was, probably, his letter in March 1968 to Communications of the ACM about structured programming) an illuminating moment, in which failure to understand occurred on both sides of the issue.

= External links =

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