Computing Curricula 2001

-- DRAFT (March 6, 2000) --


Appendix A
CS Body of Knowledge

The topics shown in Table A-1 represent the body of knowledge for programs in computer science, as developed by the knowledge area focus groups. For each area, topics that are considered essential for all undergraduate programs in computer science are underlined. Each of these core topics is also associated with an estimate of the minimum amount of time that must be devoted to that material.

Figure A-1. Tentative list of topics with minimum times for core

DS. Discrete Structures (37 core hours)
   DS1. Functions, relations, and sets (6)
   DS2. Basic logic (10)
   DS3. Proof techniques (12)
   DS4. Basics of counting (5)
   DS5. Graphs and trees (4)

PF. Programming Fundamentals (65 core hours)
   PF1. Algorithms and problem-solving (8)
   PF2. Fundamental programming constructs (10)
   PF3. Basic data structures (12)
   PF4. Recursion (6)
   PF5. Abstract data types (9)
   PF6. Object-oriented programming (10)
   PF7. Event-driven and concurrent programming (4)
   PF8. Using modern APIs (6)

AL. Algorithms and Complexity (31 core hours)
   AL1. Basic algorithmic analysis (4)
   AL2. Algorithmic strategies (6)
   AL3. Fundamental computing algorithms (12)
   AL4. Distributed algorithms (3)
   AL5. Basic computability theory (6)
   AL6. The complexity classes P and NP
   AL7. Automata theory
   AL8. Advanced algorithmic analysis
   AL9. Cryptographic algorithms
   AL10. Geometric algorithms

PL. Programming Languages (5 core hours)
   PL1. History and overview of programming languages (2)
   PL2. Virtual machines (1)
   PL3. Introduction to language translation (2)
   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 (33 core hours)
   AR1. Digital logic and digital systems (3)
   AR2. Machine level representation of data (3)
   AR3. Assembly level machine organization (9)
   AR4. Memory system organization (5)
   AR5. I/O and communication (3)
   AR6. CPU implementation (10)

OS. Operating Systems (22 core hours)
   OS1. Operating system principles (2)
   OS2. Concurrency (6)
   OS3. Scheduling and dispatch (3)
   OS4. Virtual memory (3)
   OS5. Device management (2)
   OS6. Security and protection (3)
   OS7. File systems and naming (3)
   OS8. Real-time systems

HC. Human-Computer Interaction (3 core hours)
   HC1. Principles of HCI (3)
   HC2. Modeling the user
   HC3. Interaction
   HC4. Window management system design
   HC5. Help systems
   HC6. Evaluation techniques
   HC7. Computer-supported collaborative work

GR. Graphics (no core hours)
   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 (10 core hours)
   IS1. Fundamental issues in intelligent systems (2)
   IS2. Search and optimization methods (4)
   IS3. Knowledge representation and reasoning (4)
   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 (10 core hours)
   IM1. Database systems (2)
   IM2. Data modeling and the relational model (8)
   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 (15 core hours)
   NC1. Introduction to net-centric computing (9)
   NC2. The web as an example of client-server computing (6)
   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 (30 core hours)
   SE1. Software processes and metrics (6)
   SE2. Software requirements and specifications (6)
   SE3. Software design and implementation (6)
   SE4. Verification and validation (6)
   SE5. Software tools and environments (3)
   SE6. Software project methodologies (3)

CN. Computational Science (no core hours)
   CN1. Numerical analysis
   CN2. Scientific visualization
   CN3. Architecture for scientific computing
   CN4. Programming for parallel architectures
   CN5. Applications

SP. Social and Professional Issues (16 core hours)
   SP1. History of computing (1)
   SP2. Social context of computing (2)
   SP3. Methods and tools of analysis (2)
   SP4. Professional and ethical responsibilities (2)
   SP5. Risks and liabilities of safety-critical systems (2)
   SP6. Intellectual property (3)
   SP7. Privacy and civil liberties (2)
   SP8. Social implications of the Internet (2)
   SP9. Computer crime
   SP10. Economic issues in computing
   SP11. Philosophical foundations of ethics

In future versions of this report, this body of knowledge will be supplemented with others that cover other disciplines within the computing field.


CC2001 Report
DRAFT -- March 6, 2000
This report is a working draft and does not carry
any endorsement from the sponsoring organizations