3
COMPUTER 82 EDUCATION Published by the IEEE Computer Society 0018-9162/10/$26.00 © 2010 IEEE What Should All CS Graduates Know? W hen those of us who have been teach- ing for many years talk about the state of computer science education to professionals who have been work- ing in industry for a similar amount of time, a particular question frequently arises. It takes differ- ent forms, but the essence of the question is, “Why don’t computer science students have to take a course in ________ anymore?” The blank is filled in with the area the questioner believes includes some- thing important that absolutely every CS graduate should know. Operating systems, database sys- tems, and compilers are common choices as the focus of the question, and the questioner usually means that the course should be a fairly advanced one. My typical approach to answering this question is to point out that of the many areas in what we call com- puting today, an advanced course in any particular area may not be useful relative to a student’s career aspirations. That, of course, is not an entirely satisfying answer to someone who is convinced that every student should be taking a course in the area in question. EVOLVING GUIDELINES Looking at the history of com- puter science education through the lens of curriculum guidelines makes it possible to explore things more deeply. Curriculum 78 The “any more” part of the ques- tion posed above usually tells me that the questioner is referring to the 1980s, when the computer science education scene was much more uniform than it is today. At that time, most CS programs were significantly influenced by Curriculum 78, a set of recommendations published in early 1979 (Comm. ACM, vol. 22, no. 3, pp. 147-166). These recommendations included a curriculum structure that most CS programs follow even now, with a core of courses that every stu- dent is expected to take, and a set of electives from which each student chooses to complete the require- ments for a degree. The set of courses in the recommended core of Curricu- lum 78 included the following: CS 1. Computer Programming I, CS 2. Computer Programming II, CS 3. Introduction to Computer Systems, CS 4. Introduction to Computer Organization, CS 5. Introduction to File Processing, CS 6. Operating Systems and Computer Architecture I, CS 7. Data Structures and Algo- rithm Analysis, and CS 8. Organization of Program- ming Languages. The selection of electives sug- gested in this document allowed students in a program based on the Curriculum 78 recommendations to diverge substantially in choos- ing additional courses. Some might choose to focus on operating systems, architecture, compilers, and the like. On the other hand, a student could take a set of theoretical and math- ematical courses (since numerical analysis courses are included among the electives) and avoid the systems- oriented courses entirely. The core courses provided only an introduc- tory view of the areas they cover, so it is safe to say that even graduates in the 1980s did not really share a deep experience in any one essential area. Of course, many programs did not offer the full range of suggested electives, so students had a narrower set of choices and perhaps more Richard J. LeBlanc Seattle University Although the basic curriculum structure remains quite similar to recommendations initially offered in the 1980s, the options for what students study after completing the core courses are becoming steadily broader.

What Should All CS Graduates Know?

  • Upload
    rj

  • View
    213

  • Download
    0

Embed Size (px)

Citation preview

Page 1: What Should All CS Graduates Know?

COMPUTER 82

EDUCATION

Published by the IEEE Computer Society 0018-9162/10/$26.00 © 2010 IEEE

What Should All CS Graduates Know?

W hen those of us who have been teach-ing for many years talk about the state

of computer science education to professionals who have been work-ing in industry for a similar amount of t ime, a part icular question frequently arises. It takes differ-ent forms, but the essence of the question is, “Why don’t computer science students have to take a course in ________ anymore?” The blank is filled in with the area the questioner believes includes some-thing important that absolutely every CS graduate should know. Operating systems, database sys-tems, and compilers are common choices as the focus of the question, and the questioner usually means that the course should be a fairly advanced one.

My typical approach to answering this question is to point out that of the many areas in what we call com-puting today, an advanced course in any particular area may not be useful relative to a student’s career aspirations. That, of course, is not an entirely satisfying answer to someone who is convinced that every student should be taking a course in the area in question.

EVOLVING GUIDELINESLooking at the history of com-

puter science education through the lens of curriculum guidelines makes it possible to explore things more deeply.

Curriculum 78The “any more” part of the ques-

tion posed above usually tells me that the questioner is referring to the 1980s, when the computer science education scene was much more uniform than it is today. At that time, most CS programs were significantly influenced by Curriculum 78, a set of recommendations published in early 1979 (Comm. ACM, vol. 22, no. 3, pp. 147-166). These recommendations included a curriculum structure that most CS programs follow even now, with a core of courses that every stu-dent is expected to take, and a set of electives from which each student chooses to complete the require-ments for a degree. The set of courses in the recommended core of Curricu-lum 78 included the following:

• CS 1. Computer Programming I,• CS 2. Computer Programming

II,• CS 3. Introduction to Computer

Systems,

• CS 4. Introduction to Computer Organization,

• CS 5. Introduction to File Processing,

• CS 6. Operating Systems and Computer Architecture I,

• CS 7. Data Structures and Algo-rithm Analysis, and

• CS 8. Organization of Program-ming Languages.

The selection of electives sug-gested in this document allowed students in a program based on the Curriculum 78 recommendations to diverge substantially in choos-ing additional courses. Some might choose to focus on operating systems, architecture, compilers, and the like. On the other hand, a student could take a set of theoretical and math-ematical courses (since numerical analysis courses are included among the electives) and avoid the systems-oriented courses entirely. The core courses provided only an introduc-tory view of the areas they cover, so it is safe to say that even graduates in the 1980s did not really share a deep experience in any one essential area.

Of course, many programs did not offer the full range of suggested electives, so students had a narrower set of choices and perhaps more

Richard J. LeBlanc Seattle University

Although the basic curriculum structure remains quite similar to recommendations initially offered in the 1980s, the options for what students study after completing the core courses are becoming steadily broader.

Page 2: What Should All CS Graduates Know?

83OCTOBER 2010

in the previous version, but it also pre-sented the idea that recommendations should be forthcoming for programs in other areas of computing. Since then, additional volumes have been published with recommendations for programs in computer engineering, software engineering, information systems, and information technol-ogy. More new areas have become relevant to computing programs, with security and Web programming being among the most prominent. Signifi-cant interest in combining computing with other disciplines in creative ways has developed. Thus, we now have a

landscape in which students have a broad range of employment options and a considerable array of choices regarding the structure of their pro-gram of studies.

FLEXIBLE CS CURRICULAAll of these factors have resulted

in a great deal of pressure to reduce the required core, leaving students with the greatest degree of flexibility possible. The core requirements in the computer science recommenda-tions from 2001 can fit into about six or seven semester courses.

A recent revision of the CS curricu-lum at Stanford University exemplifies the kind of structure that offers just such flexibility (M. Sahami, A. Aiken, and J. Zelenski, “Expanding the Fron-tiers of Computer Science: Designing a Curriculum to Reflect a Diverse Field,” Proc. 41st ACM Technical Symp. Computer Science Education (SIGCSE 10), ACM Press, 2010, pp. 47-51). The Stanford curriculum includes a core of seven required courses, the first of which is an introductory program-ming course that can be satisfied by AP credit or other programming experience. Beyond this core, the cur-

riculum requires students to meet the requirements of a chosen track and also to complete a minimum number of course credits. A track generally includes four to five related courses. The available tracks include the following:

• Artificial Intelligence,• Theoretical Computer Science,• Systems,• Human-Computer Interaction,• Graphics,• Information (management and

application of data), and• Biocomputation.

It is noteworthy that these tracks include traditional CS areas, areas that have become more significant in the past two decades, and new areas, one of which is explicitly interdisci-plinary. Students can also propose individually designed tracks, which makes it clear that additional named tracks can easily be added to the cur-riculum when appropriate.

The design of the Threads cur-riculum at Georgia Tech took a somewhat more radical approach to create a similarly flexible curriculum structure (M. Furst, C. Isbell, and M. Guzdial, “Threads: How to Restruc-ture a Computer Science Curriculum for a Flat World,” Proc. 38th SIGCSE Technical Symp. Computer Science Education (SIGCSE 07). ACM Press, 2007, pp. 420-424).

There are no explicitly required core courses in this curriculum. Rather it is defined by a set of eight threads, with students completing the requirements for two threads to earn a degree. Each of the threads defines a set of required preparatory courses, a set of courses that enable students to achieve the primary knowledge and skills goals of the thread, and a

required courses, resulting in more uniform profiles among the gradu-ates of any particular program. The memories that some of us have of the days when all students took a large set of common courses and only a few electives in fact tend to be about graduates from a particular program or about the students who were inter-viewed for jobs at the company where we worked. Neither situation truly represents a broad view of all gradu-ates in computer science at that time.

Computing Curricula 91Between the late 1970s and the

1990s, the graduates of computer sci-ence programs as a whole became even less uniform. The next major publication of curriculum recommen-dation was the result of the first joint curriculum effort by the ACM and the IEEE Computer Society. The resulting guidelines are known as Computing Curricula 91 (note the plural). This document included recommenda-tions for both computer science and computer engineering curricula and, most significantly, chose to empha-size knowledge units with guidelines for how this subject matter could be grouped into courses.

Without a set of specified core courses, even the required courses began to diverge somewhat across programs. At the same time, new areas such as networking, graphics, and human-computer interaction became more common as elective choices than they had been when Curriculum 78 was developed. Addi-tionally, the range of industries in which computing graduates might find employment expanded consid-erably, leading to more diversity in expectations among those hiring the graduates.

Computing Curricula 2001This trend continued during the

past decade. Computing Curricula 2001 supplied a new set of computer science curriculum recommendations with a greater focus on courses than

Students now have a broad range of employment options and a considerable array of choices regarding the structure of their program of studies.

Page 3: What Should All CS Graduates Know?

COMPUTER 84

EDUCATION

Editor: Ann E.K. Sobel, Department of Computer Science and Software Engineering, Miami University; [email protected]

Selected CS articles and columns are available for free at http:// ComputingNow.computer.org.

four specific courses, and one more choice among two systems-oriented courses). However, given the diversity of the thread areas, there is definitely no shared experience at the upper levels of the curriculum other than inclusion of a senior project expe-rience in all threads. Rather, the ultimate result of this approach is flexibility for students to tailor their course of studies to correspond to a broad spectrum of educational goals.

A s should be obvious by now, I never intended to answer explicitly the question posed

in the title of this column. Indeed, the answer has remained amazingly constant over the more than 30 years of computing education considered here: a core of courses that includes relatively low-level knowledge and skills within the computing discipline. While the exact contents of that core have changed over the years, the basic

curriculum structure is quite similar to that recommended in Curriculum 78. The real changes have been in what students study after the core, with the options becoming steadily broader, although the shared experi-ence in upper-level courses that some people think they remember never really existed.

Richard J. LeBlanc is professor and chair, Department of Computer Sci-ence and Software Engineering, Seattle University, Washington. Con-tact him at [email protected].

set of elective courses that students can take to deepen their knowledge in the area. Courses from other disci-plines can be included in all of these categories. The eight threads are

• Devices,• Information Internetworking,• Intelligence,• Media,• Modeling and Simulation,• People,• Platforms, and• Theory.

Since students can take any two of these threads to meet the degree requirements, this curriculum actu-ally defines 28 ways to earn a CS degree. While no core was defined as part of the design process, exami-nation of all of these combinations reveals a de facto core of six courses (actually a choice among several introductory programming options,

•Computer, the flagship publication of the IEEE Computer Society, publishes peer-reviewed technical content that covers all aspects of computer science, computer engineering, technology, and applications.

•Articles selected for publication in Computer are edited to enhance readability for the nearly 100,000 computing professionals who receive this monthly magazine.

•Readers depend on Computer to provide current, unbiased, thoroughly researched information on the newest directions in computing technology.

To submit a manuscript for peer review, see Computer’s author guidelines:

www.computer.org/computer/author.htm

Welcomes Your ContributionComputer magazine

looks ahead to future

technologies