I was part of the industry panel at the American Society for Engineering Education’s Engineering Dean’s Institute Conference last week on the “Defining the Engineer of the Future - What are the skill sets industry is looking for?” panel.
Most of the nonsense I spewed can be summarized as: don’t approach the CS degree as a vocational degree. Don’t teach resume-checklist items. Don’t concern yourself with what technology/programming language/IDE is in vogue at the moment.
It’s very tempting to create curriculum to fill out a resume, as it presumably helps candidates find jobs. However, it’s the wrong thing to do.
Instead, universities should teach science.
The reason is simple: tools and technology change quickly; science changes much less quickly.
If you’re graduating as an “X programmer” for any value of X (say, Java), you’re doing yourself a disservice. X (say, Java) will be out of vogue in a little while.
Science goes stale more slowly. Understanding algorithms, computational complexity, statistics, data structures, operating systems, and compilers will remain useful 20 years from now. Knowing the minutia of J2EE will not be useful 5 years from now (or is that today?).
And my pet peeve: for heavens sakes, if you’re graduating an “engineer”, make sure he understands statistics, at least a basic level. If he doesn’t understand what a standard deviation is and can’t explain it to a 10 year old, he’s no engineer. If he doesn’t know what sampling is and why and when you’d use it, he ain’t engineer. Stats people, stats!