Knowledge areas in the CS major



The following list is adapted from Table 5.1 (p.17) of CC2001 (Computing Curriculum 2001 , the joint curricular recommendations of the Computer Science professional societies (ACM-IEEE/CS Task Force on the Curriculum).

  • The boldface headings are titles of knowledge areas that frequently appear in CS at the undergraduate level.

  • The bulleted list items are "knowledge units" of topics for undergraduate study.

  • The parenthesized recommended minimum hours (described as "core hours" in CC2001) represent the number of class hours per each knowledge unit that the committee recommends for an undergraduate major.

  • Annotations of the form  "-- CS1"  means that the indicated course(s) in St. Olaf's CS major include(s) some or all of the material listed for a particular "knowledge unit" in the list.


DS. Discrete Structures (43 recommended minimum hours)
  • DS1. Functions, relations, and sets (6) -- MFC
  • DS2. Basic logic (10) -- MFC
  • DS3. Proof techniques (12) -- MFC
  • DS4. Basics of counting (5) -- MFC
  • DS5. Graphs and trees (4) -- MFC
  • DS6. Discrete probability (6) -- MFC
PF. Programming Fundamentals (38 recommended minimum hours)
  • PF1. Fundamental programming constructs (9) -- CS1
  • PF2. Algorithms and problem-solving (6) -- CS1
  • PF3. Fundamental data structures (14) -- CS1
  • PF4. Recursion (5) -- CS1
  • PF5. Event-driven programming (4) -- CSA
AL. Algorithms and Complexity (31 recommended minimum hours)
  • AL1. Basic algorithmic analysis (4) -- ADS
  • AL2. Algorithmic strategies (6) -- ADS
  • AL3. Fundamental computing algorithms (12) -- ADS
  • AL4. Distributed algorithms (3) -- CSA , PCS
  • AL5. Basic computability (6) -- MFC , TC
  • AL6. The complexity classes P and NP (0) -- TC
  • AL7. Automata theory (0) -- TC
  • AL8. Advanced algorithmic analysis (0) -- ADS
  • AL9. Cryptographic algorithms (0) -- TC
  • AL10. Geometric algorithms (0)
  • AL11. Parallel algorithms (0) , PCS
AR. Architecture and Organization (36 recommended minimum hours)
  • AR1. Digital logic and digital systems (6) -- HD
  • AR2. Machine level representation of data (3) -- HD
  • AR3. Assembly level machine organization (9) -- HD
  • AR4. Memory system organization and architecture (5) -- HD
  • AR5. Interfacing and communication (3) -- HD
  • AR6. Functional organization (7) -- HD
  • AR7. Multiprocessing and alternative architectures (3) -- HD , PCS
  • AR8. Performance enhancements (0) -- HD
  • AR9. Architecture for networks and distributed systems (0) -- HD
OS. Operating Systems (18 recommended minimum hours)
  • OS1. Overview of operating systems (2) -- OS
  • OS2. Operating system principles (2) -- OS
  • OS3. Concurrency (6) -- OS , CSA , PCS
  • OS4. Scheduling and dispatch (3) -- OS , CSA , PCS
  • OS5. Memory management (5) -- OS , SD
  • OS6. Device management (0) -- OS
  • OS7. Security and protection (0) -- OS
  • OS8. File systems (0) -- OS , PCS
  • OS9. Real-time and embedded systems (0)
  • OS10. Fault tolerance (0) , PCS
  • OS11. System performance evaluation (0)
  • OS12. Scripting (0) -- OS , PCS
NC. Net-Centric Computing (15 recommended minimum hours)
  • NC1. Introduction to net-centric computing (2) -- CSA
  • NC2. Communication and networking (7) -- CSA
  • NC3. Network security (3) -- CSA
  • NC4. The web as an example of client-server computing (3) -- CSA
  • NC5. Building web applications (0) -- ATP
  • NC6. Network management (0) -- NET , PCS
  • NC7. Compression and decompression (0) -- ADS
  • NC8. Multimedia data technologies (0)
  • NC9. Wireless and mobile computing (0)
PL. Programming Languages (21 recommended minimum hours)
  • PL1. Overview of programming languages (2) -- PL
  • PL2. Virtual machines (1) -- HD , PCS
  • PL3. Introduction to language translation (2) -- PL
  • PL4. Declarations and types (3) -- PL
  • PL5. Abstraction mechanisms (3) -- PL
  • PL6. Object-oriented programming (10) -- SD , PCS
  • PL7. Functional programming (0) -- CS1
  • PL8. Language translation systems (0) -- PL
  • PL9. Type systems (0) -- PL
  • PL10. Programming language semantics (0) -- PL
  • PL11. Programming language design (0) -- PL
HC. Human-Computer Interaction (8 recommended minimum hours)
  • HC1. Foundations of human-computer interaction (6) -- ESD , CSA
  • HC2. Building a simple graphical user interface (2) -- CSA
  • HC3. Human-centered software evaluation (0)
  • HC4. Human-centered software development (0)
  • HC5. Graphical user-interface design (0)
  • HC6. Graphical user-interface programming (0) -- ATP
  • HC7. HCI aspects of multimedia systems (0)
  • HC8. HCI aspects of collaboration and communication (0)
GV. Graphics and Visual Computing (3 recommended minimum hours)
  • GV1. Fundamental techniques in graphics (2) -- CSA
  • GV2. Graphic systems (1) -- CSA
  • GV3. Graphic communication (0)
  • GV4. Geometric modeling (0) -- CG
  • GV5. Basic rendering (0) -- CG
  • GV6. Advanced rendering (0) -- CG
  • GV7. Advanced techniques (0) -- CG
  • GV8. Computer animation (0)
  • GV9. Visualization (0)
  • GV10. Virtual reality (0)
  • GV11. Computer vision (0)
IS. Intelligent Systems (10 recommended minimum hours)
  • IS1. Fundamental issues in intelligent systems (1) -- LP
  • IS2. Search and constraint satisfaction (5) -- LP
  • IS3. Knowledge representation and reasoning (4) -- LP
  • IS4. Advanced search (0) -- LP
  • IS5. Advanced knowledge representation and reasoning (0) -- LP
  • IS6. Agents (0)
  • IS7. Natural language processing (0)
  • IS8. Machine learning and neural networks (0)
  • IS9. AI planning systems (0)
  • IS10. Robotics (0)
IM. Information Management (10 recommended minimum hours)
  • IM1. Information models and systems (3) -- CSA
  • IM2. Database systems (3) -- CSA
  • IM3. Data modeling (4) -- CSA
  • IM4. Relational databases (0) -- DB
  • IM5. Database query languages (0) -- DB
  • IM6. Relational database design (0) -- DB
  • IM7. Transaction processing (0) -- DB
  • IM8. Distributed databases (0)
  • IM9. Physical database design (0) -- DB
  • IM10. Data mining (0)
  • IM11. Information storage and retrieval (0)
  • IM12. Hypertext and hypermedia (0) -- CSA
  • IM13. Multimedia information and systems (0)
  • IM14. Digital libraries (0)
SP. Social and Professional Issues (16 recommended minimum hours)
  • SP1. History of computing (1) -- ESD
  • SP2. Social context of computing (3) -- ESD
  • SP3. Methods and tools of analysis (2) -- SD , ESD
  • SP4. Professional and ethical responsibilities (3) -- ESD
  • SP5. Risks and liabilities of computer-based systems (2) -- ESD
  • SP6. Intellectual property (3) -- ESD
  • SP7. Privacy and civil liberties (2) -- ESD
  • SP8. Computer crime (0) -- ESD
  • SP9. Economic issues in computing (0) -- ESD
  • SP10. Philosophical frameworks (0)
SE. Software Engineering (31 recommended minimum hours)
  • SE1. Software design (8) -- SD , PCS
  • SE2. Using APIs (5) -- CSA , PCS
  • SE3. Software tools and environments (3) -- SD
  • SE4. Software processes (2) -- SD
  • SE5. Software requirements and specifications (4) -- SD
  • SE6. Software validation (3) -- CSA
  • SE7. Software evolution (3) -- SD
  • SE8. Software project management (3) -- SD
  • SE9. Component-based computing (0)
  • SE10. Formal methods (0) -- CS1 , SD
  • SE11. Software reliability (0) , PCS
  • SE12. Specialized systems development (0) , PCS
CN. Computational Science and Numerical Methods (0 recommended minimum hours)
  • CN1. Numerical analysis (0)
  • CN2. Operations research (0)
  • CN3. Modeling and simulation (0)
  • CN4. High-performance computing (0) , PCS