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.
Why does it have to be a choice between teaching coding and teaching theory? Why not do both, and do both well?
What's wrong with adding a full-year course in the final year, covering actual in-the-field coding techniques?
citation required!
It's a dichotomy if you conflate the practice of creating programs for a user with creating programs to solve problems.
The kind of programming Dijkstra is talking about is solving mathematical problems like finding the shortest path, etc. Not programming in the sense of providing a neat visualization of the path a packet takes between routers.
There is some overlap, yes, but I think that the distinction between CS (what Dijkstra is talking about) and Software Engineering is that CS is about creating the algorithm to find a result. Implementation is detail after the algorithm is created, and is independent of language, and so it makes sense to teach a provable non-language rather than a language like C,Java,Perl,C++,Smalltalk etc.
The reason people don't like what he says however is mostly because of the lack of differentiation between software engineering and CS in most schools. They think of a degree as a practical piece of paper for a job, not as being taught an entirely different way of thinking. In this case CS degrees are teaching things that are really beyond its ken.