Software Development is not Computer Science
This post by Chris Chapman is a wonderful piece of interesting research. He is basically pointing out that Ontario Universities are not teaching newer software development practices in their computer science programs. He apparently plans to follow up with all Canadian Universities.
What Chris doesn't seem to understand is that computer science is not the study of software development. Computer science is theoretical, not applied science. If you want to build a bridge, do you do a degree in civil engineering, or in physics?
Check out Wikipedia on this common mistake:
"In fact, the renowned computer scientist Edsger Dijkstra is often quoted as saying, "Computer science is no more about computers than astronomy is about telescopes." The design and deployment of computers and computer systems is generally considered the province of disciplines other than computer science. For example, the study of computer hardware is usually considered part of computer engineering, while the study of commercial computer systems and their deployment is often called information technology or information systems."
In a field that's still relatively new, there's still much confusion over what each of the related fields should be named. But there's no reason to believe that agile development or design patterns are computer science concepts.
That said, I can't explain why so many computer science departments are interested in talking about big design up front or waterfalls.
I think Chris has opened up an interesting dialogue. Where do people go to learn these practices? Do employers believe that computer science grads should know these things? If so, someone needs to clarify for the employers.
Someone also ought to clarify for the students! I personally have a Bachelor of Computer Science degree. When I started, I thought I was going to learn to be a better programmer. But that was not the point of the program, and I was disappointed.