Computing Curricula 2001
-- DRAFT (March 6, 2000) --
Chapter 6
Defining a Curriculum
In order to develop a curriculum, it is essential to develop a detailed understanding of
the knowledge encompassed by that discipline. As we note in Chapter 4, the CC2001
Task Force has decided that this accounting must be broad enough to accommodate the
range of subdisciplines that come under the general rubric of computing. For areas such
as information systems and software engineering, our task force can rely on recent reports
issued by curriculum committees in those areas [21, 38]. For
computer science and computer engineering, the CC2001 Task Force has the central
responsibility for developing that updated body of knowledge. To this end, we have
identified a set of knowledge areas and appointed knowledge area focus groups
to define the body of knowledge for that area. This process is described in more detail in
the section entitled "Defining the body of knowledge" below.
Although the definition of the body of knowledge represents a central task of the
Computing Curricula 2001 project, it is not sufficient on its own. In some ways, viewing
the entire computing curriculum as a body of knowledge misses the forest for the trees.
To develop a more complete vision of the curriculum and its implementation, it is
important to adopt a more holistic perspective, in which broader issues are allowed to cut
across the lines represented by individual knowledge areas. The knowledge areas, after
all, reflect the boundaries of established subdisciplines. Using these boundaries as the
organizing principle for the curriculum has the conservative structure of reinforcing the
existing structure. New curricular ideas and pedagogical strategies often emerge from
explorations that transcend those disciplinary boundaries.
To encourage the development of a holistic vision of the curriculum, the CC2001
Task Force established six pedagogy focus groups, with the following areas of
concern:
- Introductory topics and courses
- Supporting topics and courses
- The computing core
- Professional practices
- Advanced study and undergraduate research
- Computing across curricula
The charter for each of these groups appears later in this chapter, and the final reports
from each group will -- in later drafts -- constitute the next six chapters of the report.
Computing Curricula 1991 organized the undergraduate curriculum by dividing it into
nine knowledge areas. Over the last decade, the discipline of computing has grown
substantially, to the point that the nine areas identified by Computing Curricula 1991 are
no longer sufficient to encompass the knowledge that students are likely to encounter in
an undergraduate curriculum. After experimenting with several organizational structures,
the CC2001 Task Force has defined an expanded set of 14 knowledge areas, as shown in
Figure 6-1:
Figure 6-1. Knowledge areas in Computing Curricula 2001
This revised list of knowledge areas differs from that used in Computing Curricula
1991 in the following ways:
- Discrete Structures (DS) has been added as a separate area. In Computing
Curricula 1991, discrete mathematics appears only as a prerequisite for topics that
require mathematical maturity. The assumption, presumably, is that such
mathematical maturity would come from prior mathematical training or from college-level
courses in mathematics. Unfortunately, most mathematics courses in
universities -- responding to the needs of the physical sciences and classical
engineering fields -- focus on calculus and other aspects of continuous mathematics
rather than on the discrete mathematics required for most computing disciplines. As a
result, the necessary discrete mathematics is often taught by faculty in computer
science or related departments. The CC2001 Task Force has chosen to emphasize the
dependency of computing on discrete mathematics by including it as a separate
knowledge area.
- The need to include instruction in the use of a programming language has
been made explicit by the inclusion of a distinct knowledge area on Programming
Fundamentals (PF). Computing Curricula 1991 defined a knowledge area
entitled "Introduction to a Programming Language" but identified it as an
optional component of the curriculum. In part, introductory programming
was left out of the common requirements in the hope that an increasing number of
students would acquire the necessary skills and experience in secondary school.
Unfortunately, this prediction has not been realized. Despite the overwhelming
increase in the availability of computing resources to secondary schools, many
students arrive at universities with little understanding of programming discipline and
the basic principles of software design. For this reason, the CC2001 Task Force has
chosen to define a separate Programming Fundamentals area that enumerates the basic
programming skills that all students of computing must acquire to prepare themselves
for more advanced study.
- The knowledge area on Social, Ethical, and Professional Issues (SP) has
been integrated into the structure of the curriculum in a way that gives it equal weight
with the other knowledge areas. Since the publication of Computing Curricula
1991, there has been a growing consensus that all students of computing must be made
aware of the social implications of their work and the ethical responsibilities of being a
computing professional. This topic has been identified as a "tenth strand" in the
computing curriculum, on an equal footing with the nine subject areas identified by
Computing Curricula 1991 [27]. The CC2001
Task Force has therefore included social, ethical, and professional issues as part of the
body of knowledge.
- Graphics, Visualization, and Multimedia (GR) and Net-Centric Computing
(NC) have been added as separate knowledge areas. Many areas of computing
have expanded dramatically since the publication of Computing Curricula 1991. As a
result, some areas that were formerly topics within a more general area have grown to
such an extent that they can no longer fit appropriately into the older structure.
After making a preliminary identification of the knowledge areas in early 1999, the
Curriculum 2001 task force appointed a knowledge area focus group to take
responsibility for each of the areas. The charge to each knowledge area focus group
appears in Figure 6-2. The members of each focus group appear in the acknowledgments
in Chapter 14.
Figure 6-2. Charter for the Knowledge Area Focus Groups
Each focus group assigned to a specific focus area will have a chair and preferably a co-chair.
The chair and co-chair of each focus area must be experts in the assigned area.
Each focus group may invite up to five additional members. Each focus group will:
- Review and firm up the scope of the focus area drafted by the joint task force
members.
- Finalize the list of individual topics associated with the focus area.
- Comment on the three processes -- theory, abstraction, and design -- as well as
the breadth and depth issues documented in Computing Curricula 1991.
- Decide the required mathematics and physical sciences.
- Highlight changes compared to Computing Curricula 1991, if applicable.
- Separate the topics into two levels, corresponding to core topics required of all
students in computing and more advanced electives.
- Suggest model courses and the corresponding lecture/lab hours, with specific
course objectives and expected learning outcome, by indicating which topics are
included in each course.
|
The knowledge area focus groups deliberated over the spring of 1999 and submitted
preliminary reports to the CC2001 Task Force. The Computing Curricula 1991 steering
committee reviewed these reports at its meeting in June 1999. The review process at that
meeting had three goals:
- To monitor the work of each focus group and make sure that it had fulfilled its
charge. If the steering committee could identify omissions in the report, the
focus groups were asked to go back and resupply the missing material.
- To review the set of knowledge units identified with each area and assess
whether those knowledge units provide adequate coverage of the area. Once
again, if the steering committee found problems in the focus group report, it asked the
focus group to provide any necessary updates.
- To determine which knowledge units in each area would be part of the
required core. Because each knowledge area focus group is composed of
experts in that area, the individuals are likely to have a strong predisposition to be
proponents for that area. As a result, the Curriculum 2001 task force expected each
knowledge area group to identify more core topics than could be justified under our
minimalist definition of the core. As noted in Chapter 5, the steering committee had
agreed that "the core will consist of those topics for which there is a broad consensus
that the topic is essential to undergraduate degrees. . . ." If the steering committee
itself could not find such a consensus in support of a topic, we eliminated it from the
core.
After some additional negotiations with the focus groups, the Curriculum 2001 task force
has identified a set of topics to go with each of the 14 areas. These topics are shown in
Figure 6-3.
Figure 6-3. Tentative list of topics in the computer science body of knowledge
DS. Discrete Structures
DS1. Functions, relations, and sets
DS2. Basic logic
DS3. Proof techniques
DS4. Basics of counting
DS5. Graphs and trees
PF. Programming Fundamentals
PF1. Algorithms and problem-solving
PF2. Fundamental programming constructs
PF3. Basic data structures
PF4. Recursion
PF5. Abstract data types
PF6. Object-oriented programming
PF7. Event-driven and concurrent programming
PF8. Using modern APIs
AL. Algorithms and Complexity
AL1. Basic algorithmic analysis
AL2. Algorithmic strategies
AL3. Fundamental computing algorithms
AL4. Distributed algorithms
AL5. Basic computability theory
AL6. The complexity classes P and NP
AL7. Automata theory
AL8. Advanced algorithmic analysis
AL9. Cryptographic algorithms
AL10. Geometric algorithms
PL. Programming Languages
PL1. History and overview of programming languages
PL2. Virtual machines
PL3. Introduction to language translation
PL4. Language translation systems
PL5. Type systems
PL6. Models of execution control
PL7. Declaration, modularity, and storage management
PL8. Programming language semantics
PL9. Functional programming paradigms
PL10. Object-oriented programming paradigms
PL11. Language-based constructs for parallelism
AR. Architecture
AR1. Digital logic and digital systems
AR2. Machine level representation of data
AR3. Assembly level machine organization
AR4. Memory system organization
AR5. I/O and communication
AR6. CPU implementation
OS. Operating Systems
OS1. Operating system principles
OS2. Concurrency
OS3. Scheduling and dispatch
OS4. Virtual memory
OS5. Device management
OS6. Security and protection
OS7. File systems and naming
OS8. Real-time systems
HC. Human-Computer Interaction
HC1. Principles of HCI
HC2. Modeling the user
HC3. Interaction
HC4. Window management system design
HC5. Help systems
HC6. Evaluation techniques
HC7. Computer-supported collaborative work
|
GR. Graphics
GR1. Graphic systems
GR2. Fundamental techniques in graphics
GR3. Basic rendering
GR4. Basic geometric modeling
GR5. Visualization
GR6. Virtual reality
GR7. Computer animation
GR8. Advanced rendering
GR9. Advanced geometric modeling
GR10. Multimedia data technologies
GR11. Compression and decompression
GR12. Multimedia applications and content authoring
GR13. Multimedia servers and filesystems
GR14. Networked and distributed multimedia systems
IS. Intelligent Systems
IS1. Fundamental issues in intelligent systems
IS2. Search and optimization methods
IS3. Knowledge representation and reasoning
IS4. Learning
IS5. Agents
IS6. Computer vision
IS7. Natural language processing
IS8. Pattern recognition
IS9. Advanced machine learning
IS10. Robotics
IS11. Knowledge-based systems
IS12. Neural networks
IS13. Genetic algorithms
IM. Information Management
IM1. Database systems
IM2. Data modeling and the relational model
IM3. Database query languages
IM4. Relational database design
IM5. Transaction processing
IM6. Distributed databases
IM7. Advanced relational database design
IM8. Physical database design
NC. Net-Centric Computing
NC1. Introduction to net-centric computing
NC2. The web as an example of client-server computing
NC3. Building web applications
NC4. Communication and networking
NC5. Distributed object systems
NC6. Collaboration technology and groupware
NC7. Distributed operating systems
NC8. Distributed systems
SE. Software Engineering
SE1. Software processes and metrics
SE2. Software requirements and specifications
SE3. Software design and implementation
SE4. Verification and validation
SE5. Software tools and environments
SE6. Software project methodologies
CN. Computational Science
CN1. Numerical analysis
CN2. Scientific visualization
CN3. Architecture for scientific computing
CN4. Programming for parallel architectures
CN5. Applications
SP. Social, Ethical, and Professional Issues
SP1. History of computing
SP2. Social context of computing
SP3. Methods and tools of analysis
SP4. Professional and ethical responsibilities
SP5. Risks and liabilities of safety-critical systems
SP6. Intellectual property
SP7. Privacy and civil liberties
SP8. Social implications of the Internet
SP9. Computer crime
SP10. Economic issues in computing
SP11. Philosophical foundations of ethics
|
As noted in the introduction to this chapter, defining a body of knowledge for a
discipline is not the same as defining a curriculum. While the work of the knowledge
area groups in defining the topics that are important within the undergraduate curriculum,
it is also important to take a holistic look at the curriculum that transcends the traditional
disciplinary boundaries. The CC2001 Task Force established six pedagogy focus groups
with the following charges:
- Introductory topics and courses
- Identify the goals of the introductory curriculum, typically corresponding to the
first year of study
- Report on both the strengths and weaknesses of the traditional programming-first
approach at reaching these goals
- Provide a short list (ideally consisting of between two and four well-specified
options) of alternative approaches
- Supporting topics and courses
- Specify goals of courses that support undergraduate computing curricula
- Identify a minimal list of supporting courses deemed essential to an
undergraduate program, as well as additional supporting courses
- The computing core
- Specify material that is deemed essential to a foundation in computing
- Develop the core as a curricular alternative to the traditional approach of
organizing programs around artifacts (e.g., courses in compilers, operating
systems, databases, and so forth)
- Professional practices
- Report on effective education in various aspects of professional practices and on
how these needs can be integrated into other courses in the curriculum.
- Advanced study and undergraduate
research
- Report on coursework beyond the core
- Include a specification of how many courses (as a minimum) should be included
to produce a reasonable undergraduate experience
- Report on undergraduate research, including an evaluation of various existing
models
- Computing across curricula
- Articulate those aspects of the computing discipline relevant to all citizens and
academic disciplines and propose guidelines for the role computer science can play
in helping students achieve that knowledge.
The pedagogy focus groups were formed later in the review process than the
counterpart focus groups examining the knowledge areas. The work of the pedagogy
focus groups, moreover, is often dependent on the results of the knowledge area focus
groups to define the scope of knowledge. The pedagogy focus groups have therefore had
a shorter time in which to work.
Despite the limited time, most of the pedagogy focus groups produced draft reports
during the second half of 1999. These reports outline the overall direction for each group
and serve as a foundation for work over the coming year. These reports, however, were
drafted prior to the January 2000 decision by the CC2001 Task Force to expand its scope
beyond computer science and computer engineering. The broadening of the definition of
the discipline has a substantial effect on the work of many of the pedagogy groups, and
the CC2001 Task Force needs to go back to those groups and ask them to review their
preliminary reports in light of that change.
In light of the recent change in direction, we have chosen not to include the draft
reports from the pedagogy focus groups in this version of the report. They will instead be
included in the next release, after the groups have had time to integrate the change in
scope.
 |
CC2001 Report
DRAFT -- March 6, 2000
This report is a working draft and does not carry
any endorsement from the sponsoring organizations
|
 |