The college curriculum: Some ideas, such as modularity or recursion, are completely fundamental. Most topics are important only in the sense that they serve to convey fundamental ideas. Many topic choices which were appealing and efficient 15 years ago have lost their luster. Fundamental ideas need to be repackaged into topics that capture the imagination of the current crop of students. In this way, we can find adequate space in the curriculum.
This repackaging is not simple. I have been working hard at creating a Freshman course called "How To Think Like A Computer Scientist". My goal is to repackage undergraduate theoretical computer science and discrete mathematics in an appealing and efficient manner. This is quite challenging. One conclusion is that we can't simply give as advice to the nation a laundry list of fundamental ideas to be incorporated into the curriculum. It will take me about three years of work to attempt this for a single course. We can't expect this sort of effort from most college professors. Another point is that important ideas should be introduced early so that they can be revisited often. For this reason, I teach Freshmen about topics such as undecidability and NP-completeness. These topics are appealing to students and provide an efficient vehicle for the fundamental idea of a reduction between problems. This idea is key in solving many programming challenges.
I would be delighted to discuss my course in detail with any interested working group members. From questionnaires given in class, I conclude that the average CS student can be inspired by theoretical topics.
General skills which result in superior problem solving ability are not natural. For most students, they are the result of good training. Furthermore, this is last time in their lives that they will have the receptiveness and resources to be trained so generally. It would be shortsighted to optimize their first day on the job in favor of life long flexibility and intelligence.
Sometimes we can have it both ways. It appears that Java might be a reasonable teaching language as well as a hot topic. Sometimes we are not so lucky. In this case, I vote for the general, abstract, and eternal.
Of course, we go too far if physics majors turn out to be viewed as better computer professionals. But this is a worse case scenario. I think that judicious inclusion of topics involving the tools of the day will balance the curriculum enough for our graduates to be hired. In fact, if we do our job right, once they have their foot in the door, our graduates will consistently demonstrate that they are unusual assets in a computer environment based on their problem solving skills.
We have a real space problem. It is solvable, but the solution is not simple. We will have to craft a curriculum in an efficiency conscious manner. We are juggling many constraints and goals. To be effective, our conclusions need to be presented in concrete and detailed ways. Many of the answers will not be at our fingertips. We will have to look to the nation's leading classrooms to find what is working and what is not.