Computing Curricula 2001
Computer Science Volume


Chapter 8
Intermediate Courses

The intermediate courses in the curriculum are designed to provide a solid foundation that serves as a base for more advanced study of particular topics. At the same time, it is important to keep in mind that the introductory courses of Chapter 7 and the intermediate courses described here together do not constitute a complete curriculum. All undergraduate programs will include a significant amount of additional elective material of the type described in Chapter 9. In this chapter, we propose four implementations for the intermediate level of the curriculum, as follows:

These implementations are presented as representative models rather than as prescriptive standards. In each case, there are many other workable options that apply similar philosophies to develop a somewhat different set of courses. Moreover, it is often possible to create hybrid approaches by combining elements from different models, as discussed in section 8.3. The most important consideration is simply whether a particular implementation ensures that all students encounter the units in the required core at some point in the curriculum.

8.1 Issues in the design of the intermediate courses

As with the introductory courses, individual faculty and institutions have crafted many different approaches to the intermediate level courses. This level of variety and the pedagogical experimentation that makes it possible are healthy signs attesting to the vitality of education in our discipline. The members of the CC2001 Task Force, however, are concerned that most of the existing models focus on relatively compartmentalized topics, with only a few seeking to build a curriculum around more abstract themes that cut across the discipline. In a 1992 article entitled "We can teach software better" [Shaw92], Mary Shaw expressed this point as follows:

Let's organize our courses around ideas rather than around artifacts. This helps make the objectives of the course clear to both students and faculty. Engineering schools don't teach boiler design -- they teach thermodynamics. Yet two of the mainstay software courses -- "compiler construction" and "operating systems" -- are system-artifact dinosaurs.

We believe that this advice remains both applicable and insightful. In existing computer science curricula, many of the courses continue to be focused around artifacts. We believe it is important for both curriculum designers and individual instructors to break away from this legacy and experiment with alternative models.

Several past reports have sought to focus on broad themes that unify the practice of computer science. Computing Curricula 1991, for example, identified three broad processes and twelve recurring concepts that permeate the study of computer science, as shown in Figure 8-1. Similarly, the ACM model curriculum for a liberal arts degree in computer science [Gibbs86, Walker96] organized its intermediate-level courses on four central themes of computer science -- hardware, software, algorithms, and theory -- leading to a course in each area.

Figure 8-1. Processes and themes from Computing Curricula 1991
The Three Processes
Theory:
  • Definitions and axioms
  • Theorems
  • Proofs
  • Definitions and axioms

Abstraction:

  • Data collection and hypothesis formation
  • Modeling and prediction
  • Design of an experiment
  • Analysis of results

Design:

  • Requirements
  • Specifications
  • Design and implementation
  • Testing and analysis
The Twelve Recurring Themes
Binding
Complexity of large problems
Conceptual and formal models
Consistency and completeness
Efficiency
Evolution
Levels of abstraction
Ordering in space
Ordering in time
Reuse
Security
Tradeoffs and consequences

At the very least, we believe it is important to recognize that even the artifact-based approaches need to remain sensitive to the technologies of the time. As Mary Shaw observed, the traditional curriculum includes courses about operating systems and compilers, which are no longer as central to the discipline as they once were. In today's world, networks and component-based systems are far more important to the practice of the field. In a rapidly changing field like computer science, focusing too narrowly on specific applications, vendors, or implementations leaves students vulnerable to the problem of obsolescence.

8.2 Sample approaches for the intermediate level

The subsections that follow describe the four intermediate tracks -- topic-based, compressed, systems-based, and web-based -- that are articulated in this report, along with an additional section describing hybrid approaches. To make it easier to see which 200-level courses go together, the descriptions in these sections use the subscripts T, C, S, and W to identify a course with its model. For example, the discussion of the topic-based approach uses the designation CS220T to refer to the intermediate course in architecture. The description of the compressed approach refers to CS220C. In fact, these two courses are the same. At the 200-level, the course number uniquely identifies the material, and the subscripts are used only to identify which track or tracks include that course. In the actual course description in Appendix B, the header line identifies all the tracks that use the approach. In this case, the header line is

which shows that the compressed, systems-based, and topic-based approaches all include this course.

8.2.1 A traditional topic-based approach

The most common approach to the intermediate courses is simply to apportion the material into units based on the traditional divisions of the field. Thus, in this approach, students take separate courses in each of the core areas: a course in architecture, a course in operating systems, a course in algorithms, and so on. It is not necessary, however, to require separate courses in every area covered by the body of knowlege. Some areas with relatively few core units, such as graphics, can be integrated into the introductory curriculum; others, such as human-computer interaction, can be incorporated into advanced courses that explore the nature of professional practice in the discipline.

As a sample implementation of this model, we propose the following set of courses:

This model is close to what many departments and programs currently do, so it has the advantage of being well tested. The classes will generally be familiar to most faculty, and instructional resources -- such as syllabi, texts, and problem sets -- are readily available.

At the same time, this model is highly susceptible to the problem of "artifact-based courses" described in section 8.1. In addition, some institutions may have problems with the size of this model. Students must complete nine intermediate courses, along with one of the introductory sequences described in Chapter 7. For large schools, offering nine intermediate courses may not be a problem. However, for schools with limited space in their major, nine intermediate courses may be beyond what their program can support. The compressed approach described in the following section offers one approach to reducing the size of the curriculum, as do the hybrid approaches in section 8.3.

8.2.2 A compressed approach

For the most part, the topic-based approach devotes a full course to each of the major areas in the body of knowledge. Most of these areas, however, do not include 40 hours of core material, which means that the intermediate courses in the topic-based approach cover additional topics beyond what is required for the core. For institutions that need to reduce the number of intermediate courses, the most straightforward approach is to combine individual topics into thematic courses that integrate material from related areas of computer science. In addition to making the core smaller, this strategy also begins to address the problem of classes that focus too narrowly on "software artifacts."

As an example, it is certainly possible to combine the material on artificial intelligence from CS260T with the material on databases from CS270T to create an integrated course that looks at these ideas together. Similarly, it is possible to merge the core topics in software engineering with those in the social and professional area. Our compressed model represents a particularly aggressive approach to combining topics that reduces the nine courses proposed in the traditional model to the following set of five courses:

This implementation covers the required core units but saves four courses over the topic-based approach. As a result, this approach may prove useful in environments where it is important to keep the number of intermediate courses to a minimum. Such pressures may exist in small colleges with few faculty members or in any institution that has been unable to recruit sufficient faculty to teach a larger curriculum.

It is not necessary, of course, to go quite so far in terms of reducing the number of intermediate courses as the compressed model does. Section 8.3 outlines a number of hybrid approaches that adopt some of the strategies from the compressed model to create intermediate course sequences that are intermediate in size between the five-course compressed model and the nine-course traditional model. At the same time, it is important to avoid being too aggressive in seeking to reduce the number of courses. We strongly recommend against trying to pack the required units into the theoretical minimum of seven courses implied by the fact that the core contains 280 hours of material. Overpacking the curriculum creates courses that lack coherent themes and leaves too little time for individual instructors to adapt and enhance the material.

8.2.3 A systems-based approach

Ultimately, the theories and practices of computer science find expression in the development of high-quality computer systems. This section defines a computer science curriculum that uses systems development as a unifying theme. It includes more technical and professional material than the other models, while retaining a reasonable level of coverage of the theoretical topics. Computer science theory remains essential, both as a foundation for understanding practice and to provide students with a lasting base of knowledge that remains valid despite changes in technology.

A minimal implementation of the systems-based approach consists of the following courses beyond the introductory sequence:

Although their titles suggest that these courses focus on single areas, it is important to use the encompassing notion of a system as a unifying theme. This system perspective must permeate all aspects of the curriculum and include a combination of theory, practice, application, and attitudes.

8.2.4 A web-based approach

This model has grown out of a grass-roots demand for curricular structures that focus more attention on the Internet and the World-Wide Web, using these domains to serve as a common foundation for the curriculum as a whole. The following courses represent one attempt to develop such a model:

8.3 Hybrid approaches

As noted in the introduction to this chapter, the four intermediate approaches outlined in this report -- the traditional approach, the compressed approach, the systems-based approach, and the web-based approach -- should be viewed as representative models that represent only a few of the possibilities available. In many cases, it is possible to combine elements of two or more approaches to create a new hybrid curriculum that may meet more effectively the needs of a particular institution. In creating such a hybrid, however, it is important to ensure that the resulting curriculum in fact covers the required core topics.

Figure 8-2 outlines three hybrid approaches that meet the condition of covering the full set of core topics when used in conjunction with any of the introductory sequences described in Chapter 7. Other combinations are possible as well.

Figure 8-2. Hybrid approaches
An eight-course hybrid that adds one cross-cutting course to a traditional model:

A seven-course hybrid that mixes the web-based and the compressed approach:

A six-course hybrid that mixes the traditional and the compressed approach:

All of the approaches described in this chapter -- the four specific models and the various hybrids -- all have a common goal: to present the fundamental ideas and enduring concepts of computer science that every student must learn to work successfully in the field. In doing so, these intermediate courses lay the foundation for more advanced work in computer science.


CC2001 Report
December 15, 2001