Computing Curricula 2001
Computer Science Volume


Chapter 6
Overview of the Curricular Models

The body of knowledge presented in Chapter 5 does not by itself constitute a curriculum. To be useful, the CC2001 report must also define detailed course implementations and strategies for assembling the individual courses into a complete undergraduate curriculum. This chapter presents a brief description of the overall philosophy behind the proposed curricular models. The descriptions of the courses themselves appear in Appendix B.

6.1 Overall structure of the model curricula

The courses described in this report are divided into three categories according to the level at which they occur in the curriculum. Courses designated as introductory are typically entry-level courses offered in the first or second year of a college or university curriculum. Courses listed as intermediate are usually second- or third-year courses and build a foundation for further study in the field. Courses designated as advanced are taken in later years and focus on those topics that require significant preparation in terms of earlier coursework.

While these distinctions are easy to understand in their own right, it is important to recognize that there is no necessary relationship between the level of the course and the notions of core and elective, which apply only to units in the body of knowledge. Although introductory and intermediate courses will certainly concentrate on core material, it is perfectly reasonable to include some elective material even in the earliest courses. Similarly, advanced courses will sometimes include some core material. These designations are independent and should not be confused.

6.2 Overview of the implementation strategies

The point of establishing the distinction among introductory, intermediate, and advanced courses is to provide natural boundaries for selecting implementation strategies. This report, for example, defines six distinct instantiations of the introductory curriculum and four thematic approaches to the intermediate courses. These implementations and their relationship in the structure of the curriculum as a whole are illustrated in Figure 6-1. The idea behind this structure is to offer greater flexibility by making it possible to start with any of the introductory approaches and then follow up that introduction with any of the intermediate approaches.

Figure 6-1. Course levels and implementation strategies

6.3 Managing the transition between different strategies

Given that the implementation strategies adopt different approaches and cover different material, it is difficult to make the various tracks directly interchangeable. To offer institutions as much flexibility as possible, we have tried to eliminate significant transition problems by adopting the following policies:

6.4 Covering the core

As illustrated in Figure 6-1, a complete undergraduate curriculum consists of an introductory phase to establish basic foundations for further study, an intermediate phase to cover most of the core units in the body of knowledge, and additional advanced courses to round out the curriculum. Institutions that adopt the CC2001 model will typically begin by choosing an implementation for the introductory phase and an implementation for the intermediate phase. In most cases, institutions will then adapt each of these implementations to fit the particular characteristics of the institution, the preferences of the faculty, and the needs of the students. In doing so, it is important to ensure that the curriculum that results includes at least the minimum coverage specified in the core of the body of knowledge. If specific core units are not included in the introductory and intermediate phase, the institution must then ensure that students acquire this material in advanced courses and set the requirements for graduation accordingly. Beyond the coverage of the computer science core, institutions must ensure that students acquire the necessary background in other areas, as described in Chapter 9.

Figures 6-2 and 6-3 show two examples of how to combine the courses from Appendix B so that they cover the computer science core. The model in Figure 6-2 uses the imperative-first implementation for the introductory phase and a traditional topics-based model for the intermediate courses; the model in Figure 6-3 uses an objects-first introductory strategy and the compressed approach for the intermediate level. Other combinations will work as well. To help potential adopters determine whether a set of courses covers the core, the CC2001 web site includes a curriculum worksheet implemented as a Java applet.

The tables shown in Figures 6-2 and 6-3 also illustrate the importance of redundant coverage in ensuring that the individual models are interchangeable. The final column in each table shows the number of additional hours allocated to the various units under that combination. The entry for PL3 (Introduction to language translation) in Figure 6-2, for example, indicates that the two core hours assigned to this unit are included in both CS112I and CS210T. Adopters choosing this pair of strategies could either leave the coverage out of one of the courses, thereby making time for additional topics, or include it in both to reinforce the students' understanding of the material.

Figure 6-2. Covering the core using the strategies "imperative-first" and "topics"
Imperative-first
Topics approach
CS111I CS112I CS115 CS210T CS220T CS225T CS230T CS260T CS270T CS280T CS290T CS490 totalextra
DS1. Functions, relations, and sets  6         6 
DS2. Basic logic  10         10 
DS3. Proof techniques  93        12 
DS4. Basics of counting  5         5 
DS5. Graphs and trees 2 4        6+2
DS6. Discrete probability  6         6 
PF1. Fundamental programming constructs9           9 
PF2. Algorithms and problem-solving3  3        6 
PF3. Fundamental data structures66 3        15+1
PF4. Recursion 5          5 
PF5. Event-driven programming      2   4 6+2
AL1. Basic algorithmic analysis 2 2        4 
AL2. Algorithmic strategies   6        6 
AL3. Fundamental computing algorithms24 6        12 
AL4. Distributed algorithms     3      3 
AL5. Basic computability1  6        7+1
AR1. Digital logic and digital systems  3 3       6 
AR2. Machine level representation of data1   3       4+1
AR3. Assembly level machine organization2   9       11+2
AR4. Memory system organization and architecture    5       5 
AR5. Interfacing and communication    3       3 
AR6. Functional organization    7       7 
AR7. Multiprocessing and alternative architectures    3       3 
OS1. Overview of operating systems     2      2 
OS2. Operating system principles     2      2 
OS3. Concurrency     6      6 
OS4. Scheduling and dispatch     3      3 
OS5. Memory management     5      5 
NC1. Introduction to net-centric computing      2     2 
NC2. Communication and networking      7     7 
NC3. Network security      3     3 
NC4. The web as an example of client-server computing      3     3 
PL1. Overview of programming languages11          2 
PL2. Virtual machines 1          1 
PL3. Introduction to language translation 2 2        4+2
PL4. Declarations and types12          3 
PL5. Abstraction mechanisms21          3 
PL6. Object-oriented programming37    2     12+2
HC1. Foundations of human-computer interaction        2 6210+4
HC2. Building a simple graphical user interface          2 2 
GV1. Fundamental techniques in graphics2         2 4+2
GV2. Graphic systems          1 1 
IS1. Fundamental issues in intelligent systems       1    1 
IS2. Search and constraint satisfaction       5    5 
IS3. Knowledge representation and reasoning       4    4 
IM1. Information models and systems        3   3 
IM2. Database systems        3   3 
IM3. Data modeling        4   4 
SP1. History of computing1        1  2+1
SP2. Social context of computing         3  3 
SP3. Methods and tools of analysis         2  2 
SP4. Professional and ethical responsibilities         3  3 
SP5. Risks and liabilities of computer-based systems         2  2 
SP6. Intellectual property        33  6+3
SP7. Privacy and civil liberties        22  4+2
SE1. Software design22        2410+2
SE2. Using APIs 2        338+3
SE3. Software tools and environments12        238+5
SE4. Software processes           22 
SE5. Software requirements and specifications1         225+1
SE6. Software validation1         135+2
SE7. Software evolution          224+1
SE8. Software project management          235+2
Total core hours per course393939353321191017162924  

Figure 6-3. Covering the core using the strategies "objects-first" and "compressed"
Objects-first
Compressed approach
CS111O CS112O CS115 CS210C CS220C CS226C CS262C CS292C totalextra
DS1. Functions, relations, and sets  6     6 
DS2. Basic logic  10     10 
DS3. Proof techniques  93    12 
DS4. Basics of counting  5     5 
DS5. Graphs and trees   4    4 
DS6. Discrete probability  6     6 
PF1. Fundamental programming constructs72      9 
PF2. Algorithms and problem-solving22 3    7+1
PF3. Fundamental data structures38 3    14 
PF4. Recursion23      5 
PF5. Event-driven programming 2   2 26+2
AL1. Basic algorithmic analysis 2 2    4 
AL2. Algorithmic strategies 2 6    8+2
AL3. Fundamental computing algorithms33 6    12 
AL4. Distributed algorithms     3  3 
AL5. Basic computability1  6    7+1
AR1. Digital logic and digital systems  3 3   6 
AR2. Machine level representation of data    3   3 
AR3. Assembly level machine organization    9   9 
AR4. Memory system organization and architecture    5   5 
AR5. Interfacing and communication    3   3 
AR6. Functional organization    7   7 
AR7. Multiprocessing and alternative architectures    3   3 
OS1. Overview of operating systems     2  2 
OS2. Operating system principles     2  2 
OS3. Concurrency     6  6 
OS4. Scheduling and dispatch     3  3 
OS5. Memory management     5  5 
NC1. Introduction to net-centric computing     2  2 
NC2. Communication and networking     7  7 
NC3. Network security     3  3 
NC4. The web as an example of client-server computing     3  3 
PL1. Overview of programming languages 2      2 
PL2. Virtual machines 1      1 
PL3. Introduction to language translation   2    2 
PL4. Declarations and types21      3 
PL5. Abstraction mechanisms12      3 
PL6. Object-oriented programming84   2  14+4
HC1. Foundations of human-computer interaction 1    427+1
HC2. Building a simple graphical user interface       22 
GV1. Fundamental techniques in graphics2      24+2
GV2. Graphic systems       11 
IS1. Fundamental issues in intelligent systems      1 1 
IS2. Search and constraint satisfaction      5 5 
IS3. Knowledge representation and reasoning      4 4 
IM1. Information models and systems      3 3 
IM2. Database systems      3 3 
IM3. Data modeling      4 4 
SP1. History of computing1       1 
SP2. Social context of computing       33 
SP3. Methods and tools of analysis       22 
SP4. Professional and ethical responsibilities       33 
SP5. Risks and liabilities of computer-based systems1      23+1
SP6. Intellectual property      3 3 
SP7. Privacy and civil liberties      2 2 
SE1. Software design22     48 
SE2. Using APIs11     35 
SE3. Software tools and environments2      13 
SE4. Software processes       22 
SE5. Software requirements and specifications 1     34 
SE6. Software validation 1     23 
SE7. Software evolution       33 
SE8. Software project management       33 
Total core hours per course3840393533402940  


CC2001 Report
December 15, 2001