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.
The Text (Score:5, Informative)
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.
Re:Mine was certainly cruel to us (Score:5, Informative)
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)
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)
cat > hello.pl
printf("hello world\n");
^D
perl hello.pl
hello world
Re:Cruel and couldn't use a computer (Score:3, Informative)
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.
Re:Mine was certainly cruel to us (Score:4, Informative)
CS (Score:2, Informative)
#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)
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)
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.