Computer Science Broad Mapping

All classification mappings for Computer Science Curricular Guidance.

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