Edsger Dijkstra, one of the most influential figures in Computer Science and the most famous Computer Scientist to never own a computer, had very strong opinions on Computer Science education. He expressed his feelings in an essay titled “The Cruelty of Really Teaching Computer Science.” You can read Dijkstra’s original, hand-written note as PDF, or the transcription, or the Wikipedia page. The piece was also covered on Slashdot with lots of nice comments. Here’s an excerpt:
Needless to say, this vision of what computing science is about is not universally applauded. On the contrary, it has met widespread –and sometimes even violent– opposition from all sorts of directions. I mention as examples (0) the mathematical guild, which would rather continue to believe that the Dream of Leibniz is an unrealistic illusion (1) the business community, which, having been sold to the idea that computers would make life easier, is mentally unprepared to accept that they only solve the easier problems at the price of creating much harder ones (2) the subculture of the compulsive programmer, whose ethics prescribe that one silly idea and a month of frantic coding should suffice to make him a life-long millionaire (3) computer engineering, which would rather continue to act as if it is all only a matter of higher bit rates and more flops per second (4) the military, who are now totally absorbed in the business of using computers to mutate billion-dollar budgets into the illusion of automatic safety (5) all soft sciences for which computing now acts as some sort of interdisciplinary haven (6) the educational business that feels that, if it has to teach formal mathematics to CS students, it may as well close its schools.
Between my time in industry and academia I’ve participated in tens of discussions about CS education. You wouldn’t catch me hand-writing a single-pass essay like Dijkstra, but I can agree with academic’s long-term view that theory will allow students to understand and apply concepts throughout their career. I also understand the industry desire for real skills (like Java or C, for example) that would allow new employees to hit the ground running. This debate will continue, but I think the state of education is going to change very soon–particularly due to the rise of developeronomics.
What do you think? Is CS education valuable? Who is doing it well? How could we improve? If schools are failing, how can students augment their curriculum?