Chapter5
Computing Curricula 2001
Computer Science Volume
Chapter 5
Overview of the CS Body of Knowledge
In developing a curriculum for undergraduate study in computer science, one of the first steps is to identify and organize the material that would be appropriate for that level. As noted in Chapter 1, the CC2001 Task Force sought to accomplish this goal by convening a set of knowledge focus groups, assigning to each one the responsibility of defining the body of knowledge associated with one of the following areas:
-
Discrete Structures (DS)
Programming Fundamentals (PF)
Algorithms and Complexity (AL)
Architecture and Organization (AR)
Operating Systems (OS)
Net-Centric Computing (NC)
Programming Languages (PL)
Human-Computer Interaction (HC)
Graphics and Visual Computing (GV)
Intelligent Systems (IS)
Information Management (IM)
Social and Professional Issues (SP)
Software Engineering (SE)
Computational Science and Numerical Methods (CN)
Each of the knowledge focus groups submitted a report to the CC2001 Task Force, which reviewed those reports to determine whether the recommendations made by that group was appropriate in the context of the curriculum as a whole.
5.1 Structure of the body of knowledge
The CS body of knowledge is organized hierarchically into three levels. The highest level of the hierarchy is the area, which represents a particular disciplinary subfield. Each area is identified by a two-letter abbreviation, such as OS for operating systems or PL for programming languages. The areas are broken down into smaller divisions called units, which represent individual thematic modules within an area. Each unit is identified by adding a numeric suffix to the area name; as an example, OS3 is a unit on concurrency. Each unit is further subdivided into a set of topics, which are the lowest level of the hierarchy.
5.1.1 Core and elective units
As discussed in Chapter 4, one of our goals in proposing curricular recommendations is to keep the required component of the body of knowledge as small as possible. To implement this principle, the CC2001 Task Force has defined a minimal core consisting of those units for which there is a broad consensus that the corresponding material is essential to anyone obtaining an undergraduate degree in this field. Units that are taught as part of an undergraduate program but which fall outside the core are considered to be elective.
In discussing the CC2001 recommendations during their development, we have found that it helps to emphasize the following points:
- The core refers to those units required of all students in all computer science degree programs. Several topics that are important in the education of many students are not included in the core. This lack of inclusion in the core does not imply a negative judgment about the value, importance, or relevance of those topics. Rather, it simply means that there was not a broad consensus that the topic should be required of every student in every computer science degree program.
- The core is not a complete curriculum. Because the core is defined as minimal, it does not, by itself, constitute a complete undergraduate curriculum.
- The core must be supplemented by additional material. Every undergraduate program must include additional elective topics from the body of knowledge. The CC2001 report does not define what those topics must be, as this additional work can and should vary based on institutional mission, the areas of concentration offered by a given institution, and individual student choice.
- Core units are not necessarily those taken in a set of introductory courses early in the undergraduate curriculum. Although many of the units defined as core are indeed introductory, there are also some core units that clearly must be covered only after students have developed significant background in the field. For example, the task force believes that all students must develop a significant application as some point during their undergraduate program. The material that is essential to successful management of projects at this scale is therefore part of the core, since it is required of all students. At the same time, the project course experience is very likely to come toward the end of a student's undergraduate program. Similarly, introductory courses may include elective units alongside the coverage of core material. The designation core simply means required and says nothing about the level of the course in which it appears.
5.1.2 Assessing the time required to cover a unit
To give readers a sense of the time required to cover a particular unit, the CC2001 report must define a metric that establishes a standard of measurement. Choosing such a metric has proven difficult, because no standard measure is recognized throughout the world. For consistency with the earlier curriculum reports, the task force has chosen to express time in hours, corresponding to the in-class time required to present the material in a traditional lecture-oriented format. To dispel any potential confusion, however, it is important to underscore the following observations about the use of lecture hours as a measure:
- The task force does not seek to endorse the lecture format. Even though we have used a metric with its roots in a classical, lecture-oriented form, the task force believes that there are other styles -- particularly given recent improvements in educational technology -- that can be at least as effective. For some of these styles, the notion of hours may be difficult to apply. Even so, the time specifications should at least serve as a comparative measure, in the sense that a 5-hour unit will presumably take roughly five times as much time to cover as a 1-hour unit, independent of the teaching style.
- The hours specified do not include time spent outside of class. The time assigned to a unit does not include the instructor's preparation time or the time students spend outside of class. As a general guideline, the amount of out-of-class work is approximately three times the in-class time. Thus, a unit that is listed as requiring 3 hours will typically entail a total of 12 hours (3 in class and 9 outside).
- The hours listed for a unit represent a minumum level of coverage. The time measurements we have assigned for each unit should be interpreted as the minimum amount of time necessary to enable a student to achieve the learning objectives for that unit. It is always appropriate to spend more time on a unit than the mandated minimum.
5.1.3 Packaging units into courses
The structure and format of courses vary significantly from institution to institution and from country to country. Even within the United States, some colleges and universities use a semester system while others follow a shorter quarter system. Under either system, there can be differences in the number of weeks in a semester, the number of lectures in a week, and the number of minutes in a lecture.
For the purposes of this report, we assume that a course meets three times a week over the course of a 15-week semester and that the individual class meetings run somewhere between 50 minutes and an hour. This schedule is typical for a 3-credit semester course in the United States. Given that some of the available time will be taken up with examinations and other activities, we have assumed that 40 hours of lecture are available over the semester. In addition, students are expected to devote three hours of time outside of class for each in-class hour, which means that the total time that each student is expected to invest 160 hours in each course. Other countries use different metrics for expressing the expected level of work. In the United Kingdom, for example, a course described in this report would correspond to 15-16 points under the Credit Accumulation and Transfer Scheme (CATS).
5.2 Summary of the CS body of knowledge
A summary of the body of knowledge -- showing the areas, units, which units are core, and the minimum time required for each -- appears as Figure 5-1. The details of the body of knowledge appear in Appendix A.
Figure 5-1. Computer science body of knowledge with core topics underlined
|
DS. Discrete Structures (43 core hours)
PF. Programming Fundamentals (38 core hours)
AL. Algorithms and Complexity (31 core hours)
AR. Architecture and Organization (36 core hours)
OS. Operating Systems (18 core hours)
NC. Net-Centric Computing (15 core hours)
PL. Programming Languages (21 core hours)
|
HC. Human-Computer Interaction (8 core hours)
GV. Graphics and Visual Computing (3 core hours)
IS. Intelligent Systems (10 core hours)
IM. Information Management (10 core hours)
SP. Social and Professional Issues (16 core hours)
SE. Software Engineering (31 core hours)
CN. Computational Science and Numerical Methods (no core hours)
|
![]() |
CC2001 Report
December 15, 2001 |
![]() |



