Back

Computer Science Detail Mapping

ACM CS 2013 Baccalaureate Guidelines Knowledge Units

ACM CS 2013 Baccalaureate Guidelines Knowledge Units classification system mapped to Computer Science Curricular Guidance.

Learning Outcome ACM CS 2013 Baccalaureate Guidelines Knowledge Units
AL-01 Analyze best, average, and worst-case behaviors of an algorithm. [Analyzing]
  • Algorithms & Complexity
AL-02 Estimate time and space complexities for a given algorithm using Big-O notation. [Evaluating]
  • Algorithms & Complexity
AL-03 Contrast standard complexity classes. [Analyzing]
  • Algorithms & Complexity
AL-04 Analyze the performances of an algorithm with various input sizes. [Analyzing]
AL-05 Apply an appropriate algorithmic approach to a given problem. [Applying]
  • Algorithms & Complexity
AL-06 Investigate the use of random/pseudo random number generation in cybersecurity applications. [Applying]
AL-07 Implement basic numerical algorithms. [Applying]
  • Algorithms & Complexity
AL-08 Implement common search algorithms, including linear and binary searches. [Applying]
  • Algorithms & Complexity
  • Computational Science
AL-09 Implement common sorting algorithms, including iterative, quadratic, and recursive. [Applying]
  • Algorithms & Complexity
AL-10 Implement hash tables, including collision avoidance and resolution. [Applying]
  • Algorithms & Complexity
AL-11 Explain the runtime and memory efficiency of principal sorting, searching, and hashing functions. [Understanding]
  • Algorithms & Complexity
AL-12 Investigate factors other than computational efficiency that influence the choice of algorithms. [Applying]
  • Algorithms & Complexity
AL-13 Compare various data structures for a given problem. [Analyzing]
AL-14 Investigate security vulnerabilities in various data structures. [Applying]
AL-15 Write a regular expression to match a pattern. [Applying]
  • Algorithms & Complexity
AL-16 Describe the concept of finite state machines. [Understanding]
  • Algorithms & Complexity
AL-17 Explain why the halting problem has no algorithmic solution. [Understanding]
  • Algorithms & Complexity
AR-01 Diagram the digital components of computing architecture. [Applying]
  • Architecture & Organization
AR-02 Analyze alternative formats to represent numerical data. [Analyzing]
  • Architecture & Organization
AR-03 Illustrate how fixed-length number representations could affect accuracy and precision, causing vulnerabilities. [Applying]
  • Architecture & Organization
AR-04 Examine the internal representation of non-numeric data. [Analyzing]
  • Architecture & Organization
AR-05 Compare different methods for converting numerical data from one format to another. [Analyzing]
  • Architecture & Organization
AR-06 Decompose the organization and major functional units of the classical von Neumann machine. [Analyzing]
  • Architecture & Organization
AR-07 Diagram how high-level language patterns map to assembly/machine language, including subroutine calls. [Applying]
  • Architecture & Organization
AR-08 Create simple assembly language program segments. [Creating]
  • Architecture & Organization
AR-09 Demonstrate the basic concepts of interrupts and I/O operations. [Understanding]
  • Architecture & Organization
AR-10 Compare the cost and performance of different types of memory technology. [Analyzing]
  • Architecture & Organization
AR-11 Calculate the effect of memory latency on execution time across the memory hierarchy. [Applying]
  • Architecture & Organization
CN-01 Illustrate the concepts of modeling and abstraction with respect to problem solving. [Applying]
  • Computational Science
CN-02 Illustrate the relationship between modeling and simulation. [Applying]
  • Computational Science
CN-03 Exemplify different types of simulations. [Understanding]
  • Computational Science
CYB-01 Describe security as a continuous process of tradeoffs, balancing between protection mechanisms and availability. [Understanding]
  • Information Assurance & Security
CYB-02 Illustrate through examples the concepts of risk, threats, vulnerabilities, attack vectors, and exploits, noting there is no such thing as perfect security. [Applying]
  • Information Assurance & Security
CYB-03 Investigate various countermeasures and security controls to minimize risk and exposure. [Applying]
  • Information Assurance & Security
CYB-04 Analyze the tradeoffs of balancing key security properties, including Confidentiality, Integrity, and Availability (CIA). [Analyzing]
  • Information Assurance & Security
CYB-05 Explain the concepts of trust and trustworthiness related to cybersecurity. [Understanding]
  • Information Assurance & Security
CYB-06 Examine ethical issues related to cybersecurity. [Analyzing]
  • Information Assurance & Security
CYB-07 Illustrate various ways to minimize privacy risks and maximize anonymity. [Applying]
  • Information Assurance & Security
CYB-08 Apply security principles and practices in a dynamic environment. [Applying]
CYB-09 Illustrate through examples the key role risk management frameworks play in identifying, assessing, prioritizing, and controlling risks to organizational assets. [Applying]
CYB-10 Illustrate with examples the goals of end-to-end data security. [Applying]
  • Information Assurance & Security
CYB-11 Use the principles of secure design. [Applying]
  • Information Assurance & Security
CYB-12 Illustrate the security implications of relying on open design vs the secrecy of design. [Applying]
  • Information Assurance & Security
CYB-13 Discuss the benefits and limitations of designing multiple layers of defenses.[Understanding]
  • Information Assurance & Security
CYB-14 Analyze the tradeoffs associated with designing security into a product. [Analyzing]
  • Information Assurance & Security
CYB-15 Construct input validation and data sanitization in applications, considering adversarial control of the input channel. [Creating] See also SDF-06.
  • Information Assurance & Security
CYB-16 Explain the tradeoffs of developing a program in a type-safe language. [Understanding] See also PL-10.
  • Information Assurance & Security
CYB-17 Implement programs that properly handle exceptions and error conditions. [Applying] See also SDF-12.
  • Information Assurance & Security
CYB-18 Examine the need to update software to fix security vulnerabilities. [Analyzing]
  • Information Assurance & Security
CYB-19 Examine likely attack types against standalone and networked systems. [Analyzing]
CYB-20 Illustrate the key principles of social engineering, including membership and trust. [Applying] See also SP-04.
  • Information Assurance & Security
CYB-21 Describe key terms in cryptology, including cryptography, cryptanalysis, cipher, cryptographic algorithm, and public key infrastructure. [Understanding]
  • Information Assurance & Security
CYB-22 Use a variety of ciphers to encrypt plaintext into ciphertext. [Applying]
  • Information Assurance & Security
CYB-23 Apply cryptographic hash functions for authentication and data integrity. [Applying]
  • Information Assurance & Security
CYB-24 Contrast symmetric and asymmetric encryption in relation to securing electronic communications and transactions. [Analyzing]
  • Information Assurance & Security
CYB-25 Explain browser and web security model concepts including same-origin policy, web sessions, and secure communication channels. [Understanding]
  • Information Assurance & Security
DS-01 Explain with examples the basic terminology of functions, relations, and sets. [Understanding]
  • Discrete Structures
DS-02 Perform the operations associated with sets, functions, and relations. [Applying]
  • Discrete Structures
DS-03 Compare practical examples to the appropriate set, function, or relation model, and interpret the associated operations and terminology in context. [Analyzing]
  • Discrete Structures
DS-04 Convert logical statements from informal language to propositional and predicate logic expressions. [Understanding]
  • Discrete Structures
DS-05 Apply formal logic proofs and/or informal, but rigorous, logical reasoning to real problems such as predicting the behavior of software or solving problems such as puzzles. [Applying]
  • Discrete Structures
DS-06 Use the rules of inference to construct proofs in propositional and predicate logic. [Applying]
  • Discrete Structures
DS-07 Describe how symbolic logic can be used to model real-life situations or computer applications. [Understanding]
  • Discrete Structures
DS-08 Apply formal methods of symbolic propositional and predicate logic, such as calculating validity of formulae and computing normal forms. [Applying]
  • Discrete Structures
DS-09 Describe the strengths and limitations of propositional and predicate logic. [Understanding]
  • Discrete Structures
DS-10 Outline the basic structure of each proof technique, including direct proof, proof by contradiction, and induction. [Analyzing]
  • Discrete Structures
DS-11 Apply each of the proof techniques (direct proof, proof by contradiction, and induction) correctly in the construction of a sound argument. [Applying]
  • Discrete Structures
DS-12 Deduce the best type of proof for a given problem. [Analyzing]
  • Discrete Structures
DS-13 Explain the parallels between ideas of mathematical and/or structural induction to recursion and recursively defined structures. [Understanding]
  • Discrete Structures
DS-14 Explain the relationship between weak and strong induction and give examples of the appropriate use of each. [Understanding]
  • Discrete Structures
DS-15 Apply counting arguments, including sum and product rules, inclusion-exclusion principle and arithmetic/geometric progressions. [Applying]
  • Discrete Structures
DS-16 Apply the pigeonhole principle in the context of a formal proof. [Applying]
  • Discrete Structures
DS-17 Calculate permutations and combinations of a set, and interpret the meaning in the context of the particular application. [Applying]
  • Discrete Structures
DS-18 Compare real-world applications appropriate to counting formalisms. [Analyzing]
  • Discrete Structures
DS-19 Solve a variety of basic recurrence relations. [Applying]
  • Discrete Structures
DS-20 Analyze a problem to determine underlying recurrence relations. [Analyzing]
  • Discrete Structures
DS-21 Perform computations involving modular arithmetic. [Applying]
  • Discrete Structures
DS-22 Illustrate the basic terminology of graph theory including properties and special cases for each type of graph/tree. [Applying]
  • Discrete Structures
DS-23 Demonstrate different traversal methods for trees and graphs, including pre-, post-, and in-order traversal of trees. [Understanding]
  • Discrete Structures
DS-24 Solve a variety of real-world problems in computer science using appropriate forms of graphs and trees, such as representing a network topology or the organization of a hierarchical file system. [Applying]
  • Discrete Structures
DS-25 Implement and use balanced trees and B-trees. [Applying]
DS-26 Implement graph algorithms. [Applying]
  • Discrete Structures
DS-27 Demonstrate how concepts from graphs and trees appear in data structures, algorithms, proof techniques (structural induction), and counting. [Understanding]
  • Discrete Structures
DS-28 Describe binary search trees and AVL trees. [Understanding]
  • Discrete Structures
DS-29 Explain complexity in the ideal and in the worst-case scenario for both implementations. [Understanding]
DS-30 Calculate probabilities of events and expectations of random variables for elementary problems. [Applying]
  • Discrete Structures
DS-31 Differentiate between dependent and independent events. [Understanding]
  • Discrete Structures
DS-32 Explain the significance of binomial distribution in probabilities. [Understanding]
  • Discrete Structures
DS-33 Apply Bayes Theorem to determine conditional probabilities in a problem. [Applying]
  • Discrete Structures
DS-34 Apply the tools of probability to solve problems. [Applying]
  • Discrete Structures
GV-01 Compare transformation and changes in dimension and coordinate systems for 2D and 3D design. [Analyzing]
  • Graphics & Visualization
GV-02 Demonstrate common uses of digital presentation to human senses. [Understanding]
  • Graphics & Visualization
GV-03 Illustrate color models and their use in computer graphics. [Applying]
  • Graphics & Visualization
GV-04 Analyze image types according to output choices. [Analyzing]
GV-05 Perform information hiding through steganography in images, messages, videos, or other media files. [Applying]
HCI-01 Analyze the importance of human-centered software. [Analyzing]
  • Human-Computer Interaction
HCI-02 Implement a simple usability test for an existing software application. [Applying]
  • Human-Computer Interaction
HCI-03 Examine the issues of trust in HCI, including examples of both high and low trust systems. [Analyzing]
  • Human-Computer Interaction
HCI-04 Write a simple application that uses a modern graphical user interface. [Applying]
  • Human-Computer Interaction
HCI-05 Use at least one national or international user interface design standard in a simple application. [Applying] See also SP-02.
  • Human-Computer Interaction
HCI-06 Analyze the interaction between a security mechanism and its usability. [Analyzing]
  • Human-Computer Interaction
IM-01 Contrast the difference between information and data. [Analyzing]
  • Information Management
IM-02 Describe the advantages and disadvantages of central organizational control over data. [Understanding]
  • Information Management
IM-03 Investigate contingency planning with respect to business continuity, disaster recovery and incident response. [Applying]
IM-04 Describe proven techniques  to secure data and information. [Understanding]
IM-05 Describe approaches to scale up information systems. [Understanding]
IM-06 Explain the characteristics that distinguish the database approach from the approach of programming with data files. [Understanding]
  • Information Management
IM-07 Diagram the components of a database system and give examples of their use. [Applying]
  • Information Management
IM-08 Explain the concept of data independence and its importance in a database system. [Understanding]
  • Information Management
IM-09 Formulate queries in SQL or a similar query language to elicit information from a database. [Creating]
  • Information Management
IM-10 Investigate vulnerabilities and failure scenarios in database systems. [Applying]
IM-11 Contrast appropriate data models, including internal structures for different data types. [Analyzing]
  • Information Management
IM-12 Diagram a relational data model for a given scenario that addresses security and privacy concerns. [Applying]
  • Information Management
IM-13 Describe the differences among relational data models and other models. [Understanding]
  • Information Management
NC-01 Diagram the basic structure of the Internet. [Applying]
  • Networking & Communication
NC-02 Describe the layered structure of a typical networked architecture, including routing and switching. [Understanding]
  • Networking & Communication
NC-03 Diagram the layers of the OSI model, including associated protocols. [Applying]
NC-04 Categorize the principles used for naming schemes and resource location.[Analyzing]
  • Networking & Communication
NC-05 Implement a simple distributed network application. [Applying]
  • Networking & Communication
NC-06 Describe security concerns in designing applications for use over wireless networks. [Understanding]
  • Networking & Communication
NC-07 Illustrate secure connectivity among networked applications. [Applying]
NC-08 Explain the advantages and disadvantages of using virtualized infrastructure in cloud computing. [Understanding] See also PD-05
OS-01 Examine major objectives, functions, features, and concepts of modern operating systems. [Analyzing]
  • Operating Systems
OS-02 Compare prevailing types of operating systems. [Analyzing]
  • Operating Systems
OS-03 Illustrate potential threats to operating systems and appropriate security measures. [Applying]
  • Operating Systems
OS-04 Diagram the interaction of an Application Programming Interface (API) with an operating system [Applying]
  • Operating Systems
OS-05 Illustrate how computing resources are used by applications and managed by the operating system. [Applying]
  • Operating Systems
OS-06 Manipulate a device list or driver I/O queue. [Applying]
  • Operating Systems
OS-07 Investigate the need for concurrency within an operating system. [Applying] See also PD-01.
  • Operating Systems
OS-08 Illustrate the principles of memory management. [Applying]
  • Operating Systems
OS-09 Illustrate the concepts of virtual memory, including paging, thrashing, and partitioning. [Applying]
  • Operating Systems
OS-10 Investigate the features and limitations of an operating system used to provide protection and security. [Applying]
  • Operating Systems
OS-11 Use mechanisms available in an operating system to control access to resources. [Applying]
  • Operating Systems
OS-12 Analyze the concept of virtualization with respect to hardware and software. [Analyzing]
  • Operating Systems
OS-13 Diagram the physical hardware devices and the virtual devices maintained by an operating system. [Applying]
  • Operating Systems
PD-01 Analyze the goals of parallelism and concurrency. [Analyzing] See also OS-07 and SF-08.
  • Parallel & Distributed Computing
PD-02 Implement various programming constructs for synchronization. [Applying]
  • Parallel & Distributed Computing
PD-03 Contrast low-level data races with higher level races. [Analyzing]
  • Parallel & Distributed Computing
PD-04 Implement mutual exclusion in order to avoid race conditions that could cause security vulnerabilities. [Applying]
  • Parallel & Distributed Computing
PD-05 Investigate the challenges and concerns related to security and privacy in Cloud computing. [Applying] See also NC-08.
  • Parallel & Distributed Computing
PL-01 Design a simple class hierarchy using superclasses, subclasses, and abstract classes. [Creating]
  • Programming Languages
PL-02 Diagram control flow in a program using dynamic dispatch. [Applying]
  • Programming Languages
PL-03 Use access and visibility modifiers to secure class data and methods. [Applying]
  • Programming Languages
PL-04 Implement in code OOP constructs, including encapsulation, abstraction, inheritance, and polymorphism. [Applying]
  • Programming Languages
  • Information Management
  • Software Development Fundamentals
PL-05 Implement algorithms which utilize immutable and mutable variables. [Applying]
PL-06 Contrast functional and object-oriented programming paradigms. [Analyzing]
  • Programming Languages
PL-07 Create an interactive program using an event-driven style. [Creating]
  • Programming Languages
PL-08 Describe potential security vulnerabilities in event-driven GUI applications. [Understanding]
  • Programming Languages
PL-09 Investigate potential errors detected from both strong-type and weak-type languages. [Applying]
  • Programming Languages
PL-10 Explain the security implications of a type-safe language for software development. [Understanding]
  • Programming Languages
SDF-01 Design an algorithm in a programming language to solve a simple problem. [Creating]
  • Software Development Fundamentals
SDF-02 Use the techniques of decomposition to modularize a program. [Applying]
  • Software Development Fundamentals
  • Software Engineering
SDF-03 Compare multiple algorithms for a given problem. [Analyzing]
  • Software Development Fundamentals
SDF-04 Create simple programs that use abstract data types (ADTs). [Creating]
  • Software Development Fundamentals
SDF-05 Investigate potential vulnerabilities in provided programming code. [Applying] See also AL-16, CYB-28, PL-10, SDF-12.
SDF-06 Create programs which use defensive programming techniques, including input validation, type checking, and protection against buffer overflow. [Creating] See also CYB-15.
SDF-07 Create code in a programming language that includes primitive data types, references, variables, expressions, assignments, I/O, control structures, and functions. [Creating]
  • Software Development Fundamentals
SDF-08 Create a simple program that uses persistence to save data across multiple executions. [Creating]
  • Software Development Fundamentals
SDF-09 Create a simple program that uses recursion. [Creating]
  • Software Development Fundamentals
SDF-10 Create simple programs that include each of the following data structures: lists, stacks, queues, hash tables, graphs and trees. [Creating]
  • Software Development Fundamentals
SDF-11 Compare the efficiency of basic operations across various data structures. [Analyzing]
  • Software Development Fundamentals
SDF-12 Investigate common coding errors that introduce security vulnerabilities. [Applying]
  • Software Development Fundamentals
SDF-13 Implement refactoring within given program components. [Applying]
  • Software Development Fundamentals
SDF-14 Analyze programming code that utilizes preconditions, postconditions, and invariants. [Analyzing]
  • Programming Languages
SDF-15 Apply a variety of strategies to test and debug programs. [Applying]
  • Software Development Fundamentals
SDF-16 Use an integrated development environment (IDE) to create, execute, test, and debug secure programs. [Applying]
  • Software Development Fundamentals
SDF-17 Use standard libraries for a given programming language. [Applying]
  • Software Development Fundamentals
SDF-18 Apply consistent documentation and program style standards. [Applying]
  • Software Development Fundamentals
SDF-19 Carry out a code review on a program component using a provided security checklist. [Applying]
  • Software Development Fundamentals
SE-01 Diagram how software interacts with various systems, including information management, embedded, process control, and communications systems. [Applying]
  • Software Engineering
SE-02 Compare the features of various process models. [Analyzing]
  • Software Engineering
SE-03 Diagram the phases of the secure software development lifecycle (SecSDLC). [Applying]
SE-04 Illustrate common behaviors that contribute to the effective functioning of a team. [Applying]
  • Software Engineering
SE-05 Investigate the risks in using third-party applications, software tools, and libraries. [Applying]
SE-06 Use a set of development tools for software systems. [Applying]
  • Software Engineering
SE-07 Implement the requirements for a secure software system. [Applying]
  • Software Engineering
SE-08 Illustrate principles of secure software design [Applying]
  • Software Engineering
SE-09 Analyze an existing software design to improve its security. [Analyzing]
  • Software Engineering
SE-10 Describe the cost and tradeoffs associated with designing security into software. [Understanding]
SE-11 Implement a small software project that uses a defined coding standard. [Applying]
  • Software Engineering
SE-12 Differentiate between program validation and verification. [Understanding]
  • Software Engineering
SE-13 Implement in code different types of testing, including security, unit testing, system testing, integration testing, and interface usability. [Applying]
  • Software Engineering
SE-14 Design a test plan that validates software security. [Creating]
  • Software Engineering
SF-01 Illustrate the basic building blocks of computers and their role in the historical development of computer architecture. [Applying]
  • Systems Fundamentals
SF-02 Discuss the differences between single thread and multiple thread, as well as single server and multiple server models. [Understanding]
  • Systems Fundamentals
SF-03 Investigate security implications related to emerging computational paradigms. [Applying]
SF-04 Describe how computing systems are constructed of layers upon layers. [Understanding]
  • Systems Fundamentals
SF-05 Implement a program using methods of layering. [Applying]
  • Systems Fundamentals
SF-06 Investigate defects in a layered program using tools for program tracing, single stepping, and debugging. [Applying]
  • Systems Fundamentals
SF-07 Illustrate the performance of simple sequential and parallel versions of the same program with different problem sizes. [Applying]
  • Systems Fundamentals
SF-08 Summarize the differences among the concepts of instruction parallelism, data parallelism, thread parallelism/multitasking, and task/request parallelism. [Understanding] See also PD-01.
  • Systems Fundamentals
SF-09 Investigate other uses of parallelism, including reliability and redundancy of execution. [Applying]
  • Systems Fundamentals
SP-01 Investigate both positive and negative ways in which computing technology impacts information exchange and social interaction. [Applying]
  • Social Issues & Professional Practice
SP-02 Examine developers’ assumptions and values embedded in hardware and software design, especially with respect to underrepresented groups and diverse populations. [Analyzing] See also HCI-06.
  • Social Issues & Professional Practice
SP-03 Analyze the impact of diversity on the computing profession. [Analyzing]
  • Social Issues & Professional Practice
SP-04 Investigate social engineering attacks and the types of bad actors who might perform them. [Applying]
  • Social Issues & Professional Practice
SP-05 Contrast stakeholder positions in a given scenario. [Analyzing]
  • Social Issues & Professional Practice
SP-06 Analyze social tradeoffs in technical decisions. [Analyzing]
  • Social Issues & Professional Practice
SP-07 Examine various ethics scenarios in computing. [Analyzing]
  • Social Issues & Professional Practice
SP-08 Support the ethical responsibility of ensuring software correctness, reliability, and safety. [Evaluating]
  • Social Issues & Professional Practice
SP-09 Compare professional codes of conduct from the ACM, IEEE Computer Society, and other organizations. [Analyzing]
  • Social Issues & Professional Practice
SP-10 Differentiate the terms among intellectual property, fair-use, copyright, patent, trademark, and plagiarism. [Understanding]
  • Social Issues & Professional Practice
SP-11 Discuss the rationale for legal protection of intellectual property. [Understanding]
  • Social Issues & Professional Practice
SP-12 Outline the need for legal protection of personal privacy. [Analyzing]
  • Social Issues & Professional Practice
SP-13 Investigate threats to privacy rights in personally identifiable information (PII). [Applying]
SP-14 Illustrate the role of data collection in the implementation of pervasive surveillance systems. [Applying]
  • Social Issues & Professional Practice
SP-15 Analyze technological solutions to privacy concerns. [Analyzing]
  • Social Issues & Professional Practice
SP-16 Use effective oral, written, electronic, and visual communication techniques with stakeholders. [Applying]
  • Social Issues & Professional Practice
SP-17 Interpret the impact of both verbal and nonverbal cues during communication among team members. [Understanding]
SP-18 Develop technical artifacts. [Creating]
SP-19 Analyze case studies related to sustainable computing efforts. [Analyzing]
  • Social Issues & Professional Practice
SP-20 Investigate laws applicable to computer crimes. [Appying]
  • Social Issues & Professional Practice
SP-21 Examine the motivation and ramifications of cyber terrorism and criminal hacking. [Analyzing]
  • Social Issues & Professional Practice
SP-22 Write a company-wide security policy. [Applying]
  • Social Issues & Professional Practice