Crisis in Computer Science Education

Allen Tucker, Bowdoin College

Computer science education is in crisis. Our curriculum is dated, our teaching methods and faculty development strategies are inadequate, and the computer science education community is fragmented into interest groups whose interactions are dysfunctional. (Otherwise, we're in pretty good shape!)

Dated Curriculum

For a long time, the popular notion that "computer science = programming" has defined our field in the eyes of the public and our colleagues in related fields of science and engineering. While programming is surely our lingua franca, our curricula have failed to distinguish this supporting role of programming from the false idea that programming is just about all there is to computer science. This single failure perpetuates a gridlock in computer science curricular evolution at all levels -- high school, college, and even graduate school.

Furthermore (and this is quite surprising), the programming methodology that introduces our curricula to thousands of students each year is dominated by a narrow collection of outdated languages and methodologies (procedural programming, top-down decomposition, solving small problems from scratch, absence of teaming, ignorance of formal methods, etc.). Current programming methodologies (event-driven object-oriented design, solving parts of large problems, thinking about complexity from the start, role-playing in teams, use of modern tools for testing and quality assurance, etc.) would be far more effective at preparing students to understand the modern principles of computer science and engineering. Yet these methodologies are not typically introduced until very late in the undergraduate major, if at all.

The subject matter which is absent from our core curricula, due in part to our uncommon obsession with programming, reflects a collective inattention to certain central themes that have emerged in our discipline in the late 1980s and early 1990s. Here are some specific examples:

Many of these attributes are the direct result of widespread disinterest in meaningful curriculum reform. Experimentation occurs rarely, and when it does the results are usually not effectively disseminated. Until a premium is placed on the value of effective teaching across a majority of colleges and universities, there is little hope for significant changes to take place in any of these areas.

Teaching and Faculty Development Methodologies

Specific issues that need to be addressed by the teaching faculties of colleges and universities are the following:

Community and Infrastructure

Computer science education is a collection of groups that represent various aspects of the education community. Dominant among these groups are the ACM Education Board, a kind of oversight group, SIGCSE, the ACM special interest group for computer science education, the AP curriculum committee, which oversees the AP test development effort, and various task forces that are commissioned by the ACM and the IEEE-CS to develop model curricula for various constituencies that teach computer science curricula.

This is a loose confederation, at best. Channels of communication seem not to exist at points where they ought to. For instance, it is not clear that there are criteria for membership on the ACM Education Board that would ensure representation from the AP Curriculum Committee, the two-year college programs, the graduate programs, the undergraduate programs, or the various professional education programs that are sponsored by industry.

Moreover, it is not clear that SIGCSE encourages participation by a wide constituency at its annual conference in the spring. What are the criteria for serving on the Program Committee for this very important conference. Where is the representation from top-10 universities with strong undergraduate programs? Where is the AP representative? And so on.

Overall, the computer science education infrastructure seems to be ill-equipped to address the many concerns expressed above, without first becoming functional itself. A first step would be to greatly widen the channels of communication and sense of inclusion among the various groups that represent different levels and interests in the future of computer science education. Much work needs to be done, but we first need to be organized.