Catch up on stories from the past week (and beyond) at the Slashdot story archive

 



Forgot your password?
typodupeerror
×
Education

Twenty Years of Dijkstra's Cruelty 727

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.
This discussion has been archived. No new comments can be posted.

Twenty Years of Dijkstra's Cruelty

Comments Filter:
  • The Text (Score:5, Informative)

    by eldavojohn ( 898314 ) * <`eldavojohn' `at' `gmail.com'> on Tuesday December 02, 2008 @10:46AM (#25959273) Journal
    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 [utexas.edu].

    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 [wikipedia.org] who may have designed the ACE and worked on the earliest computer (The Manchester Mark I [wikipedia.org]) 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.

  • by DiegoBravo ( 324012 ) on Tuesday December 02, 2008 @11:31AM (#25959929) Journal

    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):

    BEGIN EXCERPT from http://www.research.att.com/~bs/new_learning.pdf [att.com] :

            One conventional answer to the question ''Which subset of C++ should I learn first?'' is ''The C subset
    of C++.'' In my considered opinion, that's not a good answer. The C-first approach leads to an early focus
    on low-level details. It also obscures programming style and design issues by forces the student to face
    many technical difficulties to express anything interesting.

  • Re:The Text (Score:3, Informative)

    by Packet Pusher ( 231564 ) on Tuesday December 02, 2008 @11:48AM (#25960227)

    The Dijkstra wiki link said he owned a Mac for email and web browsing. How can they expect us to read the links if they aren't going to themselves.

  • Re:Hmmm... (Score:5, Informative)

    by mhesd ( 698429 ) on Tuesday December 02, 2008 @11:49AM (#25960255)

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

  • by MikeBabcock ( 65886 ) <mtb-slashdot@mikebabcock.ca> on Tuesday December 02, 2008 @12:42PM (#25961149) Homepage Journal

    University vs. College.

    Comp Sci. is not a trades course; go to a local community college and take a technology or programming course if you want real-world examples.

    Computer Science is about learning to understand computing, whether you use real or completely fictional interfaces.

  • by TheRaven64 ( 641858 ) on Tuesday December 02, 2008 @12:51PM (#25961289) Journal
    And, sadly, only the second part of that is true anymore. A few examples of things that are in a modern assembly language and not in standard C:
    • Vector operations.
    • Atomic operations.
    • Condition codes for overflow checking on arithmetic.
  • CS (Score:2, Informative)

    by Bengie ( 1121981 ) on Tuesday December 02, 2008 @01:45PM (#25962241)
    Bad teachers gets you

    #1. cargo cult programming
    #2. people bound to a language instead of logic
    #3. not knowing why using an unsigned int in a for loop is faster than a signed
    #4. using linked lists when an array would do just fine(CPU prefetch unit can't prefetch well with linked lists)
    #5a. Unable to make multithreaded programs that always work(omg! my program works on my single/hyper-threaded cpu..)
    #5b. programmers that don't know why hyper-threaded cpus won't truely show all SMP bugs
    #6. SQL queries that take 10 minutes instead of 10 miliseconds

    It's not just about making something work, but knowing why it worked and what way works best
  • Re:The Text (Score:4, Informative)

    by WhiplashII ( 542766 ) on Tuesday December 02, 2008 @06:29PM (#25967259) Homepage Journal

    what problems are you talking about?

    Achieving higher than normal reliability.

    I have... No clue - It's used in vital logic for failover between redundant controllers.

    OK, perhaps I should have mentioned "in the context of avionics systems." A watchdog timer is a timer that resets a CPU system if a timeout is reached. It is a way of attempting to achieve reliability in the presence of less reliable hardware.

    No clue

    Obviously ;)

    Do you believe that flying above the atmosphere changes your variables?

    Do you believe it doesn't? The atmosphere stops gamma rays from hitting your equipment. These gamma rays change the value of variables (as in, the gamma ray flips the DFF circuit to the opposite value in your CPU). That means you cannot rely on variables to make sure your loop exits. Therefor loops are bad.

    I think you are just spouting random gibberish.

    I have a multimillion dollar budget that says I am not - how about you?

  • Re:The Text (Score:3, Informative)

    by WhiplashII ( 542766 ) on Tuesday December 02, 2008 @07:00PM (#25967735) Homepage Journal

    then you can't depend on your if-statements branching to the correct location

    You're right. You can't.

    And so you have to develop code that will work, as often as possible, as close as correctly as possible, even though your hardware will not function per design. If statements fair better than loops in these situations - I have discussed why in moderate details elsewhere in this thread.

Always try to do things in chronological order; it's less confusing that way.

Working...