I have been watching session videos from WWDC 2011. For me, they bring up the subject of teaching old programming languages and techniques in an academic environment when the outside world rarely uses them. The stuff that Apple was showing off and people were discussing there was bleeding-edge stuff. However, it will not be bleeding-edge for much longer because developers are going to start adopting all the new developer technologies that they saw there.
I fully realize that it is important to learn the fundamentals of programming before moving on to the more shiny, advanced stuff like what Apple was showing. However, we never moved on. The instructors will probably not move on for some time, still.
An example might be compilers. If you are in the Computer Science program at Purdue, you may end up taking a class where you learn about compilers and actually have to make your own. Last year, Apple announced that they are moving on from the traditional GCC to the brand-new LLVM (Low-Level Virtual Machine). In fact, Xcode 4.2 does not support GCC anymore. It’s gone. History. However, GCC will likely linger for some time in academia because the instructors will not teach anything else. LLVM may be where things are headed, but it is new and unfamiliar. While most new software engineers will not have to understand how LLVM works, it is still a modern programming technology likely to become more and more popular as time marches on.
Maybe we should spend time during the 100- and 200-level computer science courses teaching students the basics of how software works. Things like C, Java, and basic compiler architecture could be covered then. The 300- and 400-level courses could focus more on modern programming techniques and technologies. Many universities have iPhone development courses. This is a step in the right direction. However, there are many other web frameworks out there, like Android, Sproutcore, and Rails that could do with more attention in academia as well. I could be all wrong about this, but this is where I stand on the subject.