The university computer science curriculum: education versus training

This paper argues against the "traditional" bottom-up approach to computer science in which students are trained to program during the first year and only later introduced to other subjects on a semester by semester basis. Such a curriculum produces students who view computer science in a narrow, vocationally oriented context. In contrast, a curriculum in computer science should educate students in the breadth and dynamics of the science. Thus, this paper argues in favor of a curriculum whose first year encompasses an overview of computer science and therefore establishes a perspective that allows majors to pursue the rest of their college careers with a degree of insight that is otherwise lacking. With this curriculum structure in mind, the paper identifies some major goals of a first year program and then suggests a syllabus for attaining these goals. A few years ago a major concern and topic of discussion within the Association for Computing Machinery was whether or not we were eating our seed corn--the analogy being that new computer scientists were entering the industrial sector instead of remaining in universities to educate future scientists [3]. Reasons cited for this exodus included the large differential in salaries and facilities. These, no doubt, were (and in many cases still are) significant factors. However, we should recognize that there are other factors contributing to this exodus. One is that we are placing more emphasis on training than educating in our computer science curricula. For example, the six major goals within the "computer science component" of the ACM Curriculum '78 [i] are that computer science majors should: i. be able to write programs in a reasonable amount of time that work correctly, are well documented, and are readable; 2. be able to determine whether or not they have written a reasonably efficient and well organized program; Permission to copy without fee all or part of this material is granted provided that the copies are not made or distributed for direct commercial advantage, the ACM copyright notice and the title of the publication and its date appear, and notice is given that copying is by permission of the Association for Computing Machinery. To copy otherwise, or to republish, requires a fee and/or specific permission. 1985 A C M 0-89791-152-0 85 0 0 3 / 0 0 2 3 $00.75 3. know what general types of problems are amenable to computer solution, and the various tools necessary for solving such problems; 4. be able to assess the implications of work performed either as an individual or as a member of a team; 5. understand basic computer architectures; 6. be prepared to pursue in-depth training in one or more application areas or further education in computer science. Of these six goals the first four lean heavily toward vocational training while the last two only hint at the breadth of the science itself. We must decide whether our goal is to train data processing personnel or to educate computer scientists. If our choice is to train, then we cannot pretend to be shocked when new "computer scientists" choose to apply the trade they have learned. The claim here is not that the exodus to industry can be checked merely by modifying our approach to the undergraduate curriculum, but instead that such modification is a necessary step in the right direction. A student's university experience has a major impact on whether computer science is seen as a collection of skills that lead to a career or as a dynamic subject to be studied and developed. In this light, the approach to the undergraduate curriculum takes on a very influential role.