Slashdot Mirror


Twenty Years of Dijkstra's Cruelty

WatersOfOblivion writes "Twenty years ago today, Edsger Dijkstra, the greatest computer scientist to never own a computer, hand wrote and distributed 'On the Cruelty of Really Teaching Computer Science' (PDF), discussing the then-current state of Computer Science education. Twenty years later, does what he said still hold true? I know it is not the case where I went to school, but have most schools corrected course and are now being necessarily cruel to their Computer Science students?" Bonus: Dijkstra's handwriting.

20 of 727 comments (clear)

  1. The Text by eldavojohn · · Score: 5, Informative
    For those of you looking for some old fashioned HyperText Markup Language, here is a transcription of the 892 KB PDF to HTML by Javier Smaldone.

    While the handwriting is a novelty (and the PDF is actually small for a PDF), I question how long that server is going to last.

    Also (and yes this is nitpicking), I must contest this:

    Edsger Dijkstra, the greatest computer scientist to never own a computer

    I submit for consideration Alan Turing who may have designed the ACE and worked on the earliest computer (The Manchester Mark I) although never really owned it or any other computer. I think a lot of people identify him as not only a hero of World War II but also the father of all computers.

    --
    My work here is dung.
    1. Re:The Text by wilder_card · · Score: 5, Funny

      What do you think this is, wikipedia?

    2. Re:The Text by nschubach · · Score: 5, Funny

      What do you think this is, wikipedia?[citation needed]

      --
      Every time I start to have faith in humanity, I ruin it by driving to work between 7 and 8 am.
    3. Re:The Text by chunkyq · · Score: 5, Insightful

      Turning? TurNing?!
      Woe be to us, for all is certainly lost.

    4. Re:The Text by theaveng · · Score: 5, Insightful

      No.

      (1) His argument is that to discuss "software engineering" is as silly as to discuss "algebra engineering" or "formula engineering" in math courses. A program is simply a formula to be executed - nothing more - says the Computer Science professor.

      (2) Programs manipulate numbers. Mathematic formulae manipulate numbers. It's an entirely reasonable conclusion that he has reached that a program is merely a formula.

      (3) Putting pretty pictures on screen or manipulating airplane surfaces (my specialty) is still just formula execution.

      --
      FOX NEWS.com should be BANNED from television and internet. Have the Congress take it over and give us Truespeak.
  2. Mine was certainly cruel to us by MikeRT · · Score: 5, Funny

    They made us do mostly Java, even though a number of us could do C or C++.

    1. Re:Mine was certainly cruel to us by chrb · · Score: 5, Interesting

      My old university dropped C and replaced it with Java for all CS courses apart from Operating Systems. I asked one of the professors why - he said many students complained that dealing with pointers was too hard, and that the rise of Java and Java programming jobs meant C was obsolete and pointless, that the issue of programming languages came up on prospective student visit days, and that in order to be "commercially attractive" to these potential students they had to switch. We even used to do assembly language programming in the first year - now, the replacement course teaches students how to use Eclipse for Java programming.

      Several years later I was back tutoring, and I was very disappointed to find out that I had to explain pointers and pointer arithmetic to people who were almost at the end of their Computer Science degree, and who didn't understand why their code was crashing with "null references" when "Java was supposed to get rid of all that memory stuff!".

    2. Re:Mine was certainly cruel to us by 0xABADC0DA · · Score: 5, Insightful

      You're right. Also Stroustrup had clearly pointed (in other argument lines) that C is not the better way to learn C++ (or OO in general):

      Somebody quoting Stroustrup on the topic of computer languages... seriously? C++ is like legalese -- it's impenetrable to read, full of unintended consequences, and even though it's spelled out in excruciating detail what it says is still open to interpretation.

      Not only is C the first subset of C++ that programmers should learn, it is the only subset of C++ they should learn.

      And I argue that C actually teaches people more about object-oriented that most other languages, because it teaches them in no uncertain terms why you should use objects. It's harder to realize why you don't just make fields public until you've seen global variables in a C program.

      Then Java teaches you how to do OO where you are not allowed to 'cheat' by replacing methods at runtime, or calling methods that don't exist, etc. And JavaScript takes all that and gives you LISP power.

  3. Cruel to be kind by MosesJones · · Score: 5, Insightful

    The aim of a really good degree (as opposed to a lecture driven box ticking one) is to be cruel, you want to feel that your head is going to explode and that your subject really is an absolute bitch.

    Then you graduate and find out the real world is easier than the theory.

    Cruelty is important in a good education to make you achieve in the real world. An easy flow through degree gets you the cert but gives you unrealistic expectation of how hard the real world can be.

    Personally my degree was a mind bending bitch of mumbling lecturers and impossible (literally in some cases) questions that covered everything from quantum mechanics "basics" and abstract computing theory through to how to dope a transistor.

    It was cruel, it was unusual... it was great.
     

    --
    An Eye for an Eye will make the whole world blind - Gandhi
  4. Re:Hmmm... by 16384 · · Score: 5, Funny

    cat > hello.c
    printf("hello world");
    ^D
    gcc hello.c
    hello.c:1: error: expected declaration specifiers or '...' before string constant
    hello.c:1: warning: data definition has no type or storage class
    hello.c:1: warning: conflicting types for built-in function 'printf'

  5. Re:Hmmm... by RobKow · · Score: 5, Insightful

    I'd have to say in recruiting software engineers I have much more of a problem with theory-light code monkeys than I do with non-coders that are well-versed in CS theory. With the former you wind up with people who can't leave whatever language they're most familiar with and don't really understand why what they're doing works (cargo cult programming). It's easier to teach good coding practices in the field than it is CS theory.

    My technical interviews aren't full of riddles or obscure CS theory questions, but I ask a series of pointed questions to see if the candidate has a good familiarity with the various language families (not just particular languages), common data structures (they should at least have encountered them, even if they need to look them up to implement them), and can talk in terms of pseudocode and algorithms instead of just library functions and language idiom. Language experience is a plus, but definitely not required.

  6. Re:Cruel and couldn't use a computer by Malc · · Score: 5, Insightful

    Why is fake assembly and fake OS cruel? It's computer science, not a vocational tech course. They've presumably tried to bypass the issues of real-world systems that distract you from learning the point. Once you've got the basic concepts, any OS and any language become approachable - why would you want to learn something specific that would be out-of-date in short measure? Seems rather myopic to me.

  7. Re:Professionals should know their tools by thermian · · Score: 5, Insightful

    I don't think you can lay the blame for students knowing less on the department that they attend.

    Mine taught a good mix of coding and theory, but we still had morons who didn't do enough coding to actually learn their craft well, and people who learned the coding but didn't learn enough theory to get decent course grades.

    The point is, while at university studying computer science or any other subject it is your own responsibility to teach yourself around the subjects you are introduced to in the classroom.

    I was taught using Java and Delphi, and yet finished my degree as a pretty competent C coder, in spite of never having attended a class on that language.

    I also studied a great deal more around the subjects then many of my peers. Those who did the same as me tended to do well on graduation, I went on to more years of poverty as a Ph.D student myself.

    --
    A learning experience is one of those things that say, 'You know that thing you just did? Don't do that.' - D. Adams
  8. Re:Cruel and couldn't use a computer by SageinaRage · · Score: 5, Insightful

    It's the equivalent of a biology class detailing the possibilities of life, by examining chemical interactions, without actually examining any actual living organisms.

  9. Re:Professionals should know their tools by jazzduck · · Score: 5, Funny

    Our school had 3 separate Java classes, 3 separate C classes, and 3 separate C++ classes: all in 3 different departments.

    Silly. This can't be true. Everyone knows that there are no classes in C.

    --
    A cat is no trade for integrity!
  10. Re:Hmmm... by swordgeek · · Score: 5, Interesting

    Dijkstra's comments were right on the mark, and fairly obvious to people outside of CS. They were only contentious within the field, for some odd reason.

    The thing is, Computing Science should be approached in the same manner as most other science fields: A BSc in computing should be about theory, research, and pushing the state of the art. A modicum of programming is probably necessary to accomplish that, but programming should understood in the abstract--without the emphasis on 'this command, this language.' Learning to be a programmer (a) should be a division of computer engineering, or (b) probably not a degree at all. More like a one or two year college certificate.

    Chemistry, Physics, Biology, Math, and so forth, are all degrees aimed at research and study, not commercial production. Why not computing?

    --

    "People who do stupid things with hazardous materials often die." -- Jim Davidson on alt.folklore.urban
  11. Re:Hmmm... by mhesd · · Score: 5, Informative

    cat > hello.pl
    printf("hello world\n");
    ^D
    perl hello.pl
    hello world

  12. Re:Dijkstra is the typical head-up-arse CS crack by russotto · · Score: 5, Funny

    It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.

    In my experience this is utter arrogant rubbish.

    You have been trolled (by Dijkstra).

  13. Re:Hmmm... by edwinolson · · Score: 5, Insightful

    I find it ironic that, to establish your argument that Java hides implementation details, you used a C++ example employing operator overloading such that the mere existence of functions is utterly concealed.

  14. Dijkstra couldn't use a computer?!? by mengel · · Score: 5, Insightful

    Boy do you need to go back to school. Edsger wrote more and better stuff in his lifetime than anyone here on Slashdot. Did you ever get directions from Google Maps or Mapquest? Thank Edsger -- his shortest path algorithm is what they all use, and by the way, he wrote that before you were born, most of you. You know the semaphores used in the multi-cpu Linux kernels? Yep, you owe Edsger for them, too. And programming languages like C, Pascal, etc.? He helped write the first Alogol compiler, the great-grand-daddy of them all, once again before most of you were born.

    Just because he eschewed the run-break-fix approach so beloved of the folks who are spewing billions of lines of error-laden code into the world today, doesn't mean he hadn't forgotten more about writing code than most folks here have ever learned. And yes, he advocated developing code formally, and he liked to do it with pen and paper.

    So learn about who you're making snide comments about, and show some respect. When people are still using any algorithm you came up with 30 years from now, you will have the right to say something about Edsger Dijkstra.

    --
    - "History shows again and again how nature points out the folly of men" -- Blue Oyster Cult, 'Godzilla'