Computer Science Detail Mapping
NSA/DHS Center of Academic Excellence 2 Year Core Knowledge Units
NSA/DHS Center of Academic Excellence 2 Year Core Knowledge Units classification system mapped to Computer Science Curricular Guidance.
Learning Outcome  NSA/DHS Center of Academic Excellence 2 Year Core Knowledge Units 

AL01 Analyze best, average, and worstcase behaviors of an algorithm. [Analyzing] 

AL02 Estimate time and space complexities for a given algorithm using BigO notation. [Evaluating] 

AL03 Contrast standard complexity classes. [Analyzing] 

AL04 Analyze the performances of an algorithm with various input sizes. [Analyzing] 

AL05 Apply an appropriate algorithmic approach to a given problem. [Applying] 

AL06 Investigate the use of random/pseudo random number generation in cybersecurity applications. [Applying] 

AL07 Implement basic numerical algorithms. [Applying] 

AL08 Implement common search algorithms, including linear and binary searches. [Applying] 

AL09 Implement common sorting algorithms, including iterative, quadratic, and recursive. [Applying] 

AL10 Implement hash tables, including collision avoidance and resolution. [Applying] 

AL11 Explain the runtime and memory efficiency of principal sorting, searching, and hashing functions. [Understanding] 

AL12 Investigate factors other than computational efficiency that influence the choice of algorithms. [Applying] 

AL13 Compare various data structures for a given problem. [Analyzing] 

AL14 Investigate security vulnerabilities in various data structures. [Applying] 

AL15 Write a regular expression to match a pattern. [Applying] 

AL16 Describe the concept of finite state machines. [Understanding] 

AL17 Explain why the halting problem has no algorithmic solution. [Understanding] 

AR01 Diagram the digital components of computing architecture. [Applying] 

AR02 Analyze alternative formats to represent numerical data. [Analyzing] 

AR03 Illustrate how fixedlength number representations could affect accuracy and precision, causing vulnerabilities. [Applying] 

AR04 Examine the internal representation of nonnumeric data. [Analyzing] 

AR05 Compare different methods for converting numerical data from one format to another. [Analyzing] 

AR06 Decompose the organization and major functional units of the classical von Neumann machine. [Analyzing] 

AR07 Diagram how highlevel language patterns map to assembly/machine language, including subroutine calls. [Applying] 

AR08 Create simple assembly language program segments. [Creating] 

AR09 Demonstrate the basic concepts of interrupts and I/O operations. [Understanding] 

AR10 Compare the cost and performance of different types of memory technology. [Analyzing] 

AR11 Calculate the effect of memory latency on execution time across the memory hierarchy. [Applying] 

CN01 Illustrate the concepts of modeling and abstraction with respect to problem solving. [Applying] 

CN02 Illustrate the relationship between modeling and simulation. [Applying] 

CN03 Exemplify different types of simulations. [Understanding] 

CYB01 Describe security as a continuous process of tradeoffs, balancing between protection mechanisms and availability. [Understanding] 

CYB02 Illustrate through examples the concepts of risk, threats, vulnerabilities, attack vectors, and exploits, noting there is no such thing as perfect security. [Applying] 

CYB03 Investigate various countermeasures and security controls to minimize risk and exposure. [Applying] 

CYB04 Analyze the tradeoffs of balancing key security properties, including Confidentiality, Integrity, and Availability (CIA). [Analyzing] 

CYB05 Explain the concepts of trust and trustworthiness related to cybersecurity. [Understanding] 

CYB06 Examine ethical issues related to cybersecurity. [Analyzing] 

CYB07 Illustrate various ways to minimize privacy risks and maximize anonymity. [Applying] 

CYB08 Apply security principles and practices in a dynamic environment. [Applying] 

CYB09 Illustrate through examples the key role risk management frameworks play in identifying, assessing, prioritizing, and controlling risks to organizational assets. [Applying] 

CYB10 Illustrate with examples the goals of endtoend data security. [Applying] 

CYB11 Use the principles of secure design. [Applying] 

CYB12 Illustrate the security implications of relying on open design vs the secrecy of design. [Applying] 

CYB13 Discuss the benefits and limitations of designing multiple layers of defenses.[Understanding] 

CYB14 Analyze the tradeoffs associated with designing security into a product. [Analyzing] 

CYB15 Construct input validation and data sanitization in applications, considering adversarial control of the input channel. [Creating] See also SDF06. 

CYB16 Explain the tradeoffs of developing a program in a typesafe language. [Understanding] See also PL10. 

CYB17 Implement programs that properly handle exceptions and error conditions. [Applying] See also SDF12. 

CYB18 Examine the need to update software to fix security vulnerabilities. [Analyzing] 

CYB19 Examine likely attack types against standalone and networked systems. [Analyzing] 

CYB20 Illustrate the key principles of social engineering, including membership and trust. [Applying] See also SP04. 

CYB21 Describe key terms in cryptology, including cryptography, cryptanalysis, cipher, cryptographic algorithm, and public key infrastructure. [Understanding] 

CYB22 Use a variety of ciphers to encrypt plaintext into ciphertext. [Applying] 

CYB23 Apply cryptographic hash functions for authentication and data integrity. [Applying] 

CYB24 Contrast symmetric and asymmetric encryption in relation to securing electronic communications and transactions. [Analyzing] 

CYB25 Explain browser and web security model concepts including sameorigin policy, web sessions, and secure communication channels. [Understanding] 

DS01 Explain with examples the basic terminology of functions, relations, and sets. [Understanding] 

DS02 Perform the operations associated with sets, functions, and relations. [Applying] 

DS03 Compare practical examples to the appropriate set, function, or relation model, and interpret the associated operations and terminology in context. [Analyzing] 

DS04 Convert logical statements from informal language to propositional and predicate logic expressions. [Understanding] 

DS05 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] 

DS06 Use the rules of inference to construct proofs in propositional and predicate logic. [Applying] 

DS07 Describe how symbolic logic can be used to model reallife situations or computer applications. [Understanding] 

DS08 Apply formal methods of symbolic propositional and predicate logic, such as calculating validity of formulae and computing normal forms. [Applying] 

DS09 Describe the strengths and limitations of propositional and predicate logic. [Understanding] 

DS10 Outline the basic structure of each proof technique, including direct proof, proof by contradiction, and induction. [Analyzing] 

DS11 Apply each of the proof techniques (direct proof, proof by contradiction, and induction) correctly in the construction of a sound argument. [Applying] 

DS12 Deduce the best type of proof for a given problem. [Analyzing] 

DS13 Explain the parallels between ideas of mathematical and/or structural induction to recursion and recursively defined structures. [Understanding] 

DS14 Explain the relationship between weak and strong induction and give examples of the appropriate use of each. [Understanding] 

DS15 Apply counting arguments, including sum and product rules, inclusionexclusion principle and arithmetic/geometric progressions. [Applying] 

DS16 Apply the pigeonhole principle in the context of a formal proof. [Applying] 

DS17 Calculate permutations and combinations of a set, and interpret the meaning in the context of the particular application. [Applying] 

DS18 Compare realworld applications appropriate to counting formalisms. [Analyzing] 

DS19 Solve a variety of basic recurrence relations. [Applying] 

DS20 Analyze a problem to determine underlying recurrence relations. [Analyzing] 

DS21 Perform computations involving modular arithmetic. [Applying] 

DS22 Illustrate the basic terminology of graph theory including properties and special cases for each type of graph/tree. [Applying] 

DS23 Demonstrate different traversal methods for trees and graphs, including pre, post, and inorder traversal of trees. [Understanding] 

DS24 Solve a variety of realworld 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] 

DS25 Implement and use balanced trees and Btrees. [Applying] 

DS26 Implement graph algorithms. [Applying] 

DS27 Demonstrate how concepts from graphs and trees appear in data structures, algorithms, proof techniques (structural induction), and counting. [Understanding] 

DS28 Describe binary search trees and AVL trees. [Understanding] 

DS29 Explain complexity in the ideal and in the worstcase scenario for both implementations. [Understanding] 

DS30 Calculate probabilities of events and expectations of random variables for elementary problems. [Applying] 

DS31 Differentiate between dependent and independent events. [Understanding] 

DS32 Explain the significance of binomial distribution in probabilities. [Understanding] 

DS33 Apply Bayes Theorem to determine conditional probabilities in a problem. [Applying] 

DS34 Apply the tools of probability to solve problems. [Applying] 

GV01 Compare transformation and changes in dimension and coordinate systems for 2D and 3D design. [Analyzing] 

GV02 Demonstrate common uses of digital presentation to human senses. [Understanding] 

GV03 Illustrate color models and their use in computer graphics. [Applying] 

GV04 Analyze image types according to output choices. [Analyzing] 

GV05 Perform information hiding through steganography in images, messages, videos, or other media files. [Applying] 

HCI01 Analyze the importance of humancentered software. [Analyzing] 

HCI02 Implement a simple usability test for an existing software application. [Applying] 

HCI03 Examine the issues of trust in HCI, including examples of both high and low trust systems. [Analyzing] 

HCI04 Write a simple application that uses a modern graphical user interface. [Applying] 

HCI05 Use at least one national or international user interface design standard in a simple application. [Applying] See also SP02. 

HCI06 Analyze the interaction between a security mechanism and its usability. [Analyzing] 

IM01 Contrast the difference between information and data. [Analyzing] 

IM02 Describe the advantages and disadvantages of central organizational control over data. [Understanding] 

IM03 Investigate contingency planning with respect to business continuity, disaster recovery and incident response. [Applying] 

IM04 Describe proven techniques Â to secure data and information. [Understanding] 

IM05 Describe approaches to scale up information systems. [Understanding] 

IM06 Explain the characteristics that distinguish the database approach from the approach of programming with data files. [Understanding] 

IM07 Diagram the components of a database system and give examples of their use. [Applying] 

IM08 Explain the concept of data independence and its importance in a database system. [Understanding] 

IM09 Formulate queries in SQL or a similar query language to elicit information from a database. [Creating] 

IM10 Investigate vulnerabilities and failure scenarios in database systems. [Applying] 

IM11 Contrast appropriate data models, including internal structures for different data types. [Analyzing] 

IM12 Diagram a relational data model for a given scenario that addresses security and privacy concerns. [Applying] 

IM13 Describe the differences among relational data models and other models. [Understanding] 

NC01 Diagram the basic structure of the Internet. [Applying] 

NC02 Describe the layered structure of a typical networked architecture, including routing and switching. [Understanding] 

NC03 Diagram the layers of the OSI model, including associated protocols. [Applying] 

NC04 Categorize the principles used for naming schemes and resource location.[Analyzing] 

NC05 Implement a simple distributed network application. [Applying] 

NC06 Describe security concerns in designing applications for use over wireless networks. [Understanding] 

NC07 Illustrate secure connectivity among networked applications. [Applying] 

NC08 Explain the advantages and disadvantages of using virtualized infrastructure in cloud computing. [Understanding] See also PD05 

OS01 Examine major objectives, functions, features, and concepts of modern operating systems. [Analyzing] 

OS02 Compare prevailing types of operating systems. [Analyzing] 

OS03 Illustrate potential threats to operating systems and appropriate security measures. [Applying] 

OS04 Diagram the interaction of an Application Programming Interface (API) with an operating system [Applying] 

OS05 Illustrate how computing resources are used by applications and managed by the operating system. [Applying] 

OS06 Manipulate a device list or driver I/O queue. [Applying] 

OS07 Investigate the need for concurrency within an operating system. [Applying] See also PD01. 

OS08 Illustrate the principles of memory management. [Applying] 

OS09 Illustrate the concepts of virtual memory, including paging, thrashing, and partitioning. [Applying] 

OS10 Investigate the features and limitations of an operating system used to provide protection and security. [Applying] 

OS11 Use mechanisms available in an operating system to control access to resources. [Applying] 

OS12 Analyze the concept of virtualization with respect to hardware and software. [Analyzing] 

OS13 Diagram the physical hardware devices and the virtual devices maintained by an operating system. [Applying] 

PD01 Analyze the goals of parallelism and concurrency. [Analyzing] See also OS07 and SF08. 

PD02 Implement various programming constructs for synchronization. [Applying] 

PD03 Contrast lowlevel data races with higher level races. [Analyzing] 

PD04 Implement mutual exclusion in order to avoid race conditions that could cause security vulnerabilities. [Applying] 

PD05 Investigate the challenges and concerns related to security and privacy in Cloud computing. [Applying] See also NC08. 

PL01 Design a simple class hierarchy using superclasses, subclasses, and abstract classes. [Creating] 

PL02 Diagram control flow in a program using dynamic dispatch. [Applying] 

PL03 Use access and visibility modifiers to secure class data and methods. [Applying] 

PL04 Implement in code OOP constructs, including encapsulation, abstraction, inheritance, and polymorphism. [Applying] 

PL05 Implement algorithms which utilize immutable and mutable variables. [Applying] 

PL06 Contrast functional and objectoriented programming paradigms. [Analyzing] 

PL07 Create an interactive program using an eventdriven style. [Creating] 

PL08 Describe potential security vulnerabilities in eventdriven GUI applications. [Understanding] 

PL09 Investigate potential errors detected from both strongtype and weaktype languages. [Applying] 

PL10 Explain the security implications of a typesafe language for software development. [Understanding] 

SDF01 Design an algorithm in a programming language to solve a simple problem. [Creating] 

SDF02 Use the techniques of decomposition to modularize a program. [Applying] 

SDF03 Compare multiple algorithms for a given problem. [Analyzing] 

SDF04 Create simple programs that use abstract data types (ADTs). [Creating] 

SDF05 Investigate potential vulnerabilities in provided programming code. [Applying] See also AL16, CYB28, PL10, SDF12. 

SDF06 Create programs which use defensive programming techniques, including input validation, type checking, and protection against buffer overflow. [Creating] See also CYB15. 

SDF07 Create code in a programming language that includes primitive data types, references, variables, expressions, assignments, I/O, control structures, and functions. [Creating] 

SDF08 Create a simple program that uses persistence to save data across multiple executions. [Creating] 

SDF09 Create a simple program that uses recursion. [Creating] 

SDF10 Create simple programs that include each of the following data structures: lists, stacks, queues, hash tables, graphs and trees. [Creating] 

SDF11 Compare the efficiency of basic operations across various data structures. [Analyzing] 

SDF12 Investigate common coding errors that introduce security vulnerabilities. [Applying] 

SDF13 Implement refactoring within given program components. [Applying] 

SDF14 Analyze programming code that utilizes preconditions, postconditions, and invariants. [Analyzing] 

SDF15 Apply a variety of strategies to test and debug programs. [Applying] 

SDF16 Use an integrated development environment (IDE) to create, execute, test, and debug secure programs. [Applying] 

SDF17 Use standard libraries for a given programming language. [Applying] 

SDF18 Apply consistent documentation and program style standards. [Applying] 

SDF19 Carry out a code review on a program component using a provided security checklist. [Applying] 

SE01 Diagram how software interacts with various systems, including information management, embedded, process control, and communications systems. [Applying] 

SE02 Compare the features of various process models. [Analyzing] 

SE03 Diagram the phases of the secure software development lifecycle (SecSDLC). [Applying] 

SE04 Illustrate common behaviors that contribute to the effective functioning of a team. [Applying] 

SE05 Investigate the risks in using thirdparty applications, software tools, and libraries. [Applying] 

SE06 Use a set of development tools for software systems. [Applying] 

SE07 Implement the requirements for a secure software system. [Applying] 

SE08 Illustrate principles of secure software design [Applying] 

SE09 Analyze an existing software design to improve its security. [Analyzing] 

SE10 Describe the cost and tradeoffs associated with designing security into software. [Understanding] 

SE11 Implement a small software project that uses a defined coding standard. [Applying] 

SE12 Differentiate between program validation and verification. [Understanding] 

SE13 Implement in code different types of testing, including security, unit testing, system testing, integration testing, and interface usability. [Applying] 

SE14 Design a test plan that validates software security. [Creating] 

SF01 Illustrate the basic building blocks of computers and their role in the historical development of computer architecture. [Applying] 

SF02 Discuss the differences between single thread and multiple thread, as well as single server and multiple server models. [Understanding] 

SF03 Investigate security implications related to emerging computational paradigms. [Applying] 

SF04 Describe how computing systems are constructed of layers upon layers. [Understanding] 

SF05 Implement a program using methods of layering. [Applying] 

SF06 Investigate defects in a layered program using tools for program tracing, single stepping, and debugging. [Applying] 

SF07 Illustrate the performance of simple sequential and parallel versions of the same program with different problem sizes. [Applying] 

SF08 Summarize the differences among the concepts of instruction parallelism, data parallelism, thread parallelism/multitasking, and task/request parallelism. [Understanding] See also PD01. 

SF09 Investigate other uses of parallelism, including reliability and redundancy of execution. [Applying] 

SP01 Investigate both positive and negative ways in which computing technology impacts information exchange and social interaction. [Applying] 

SP02 Examine developersâ€™ assumptions and values embedded in hardware and software design, especially with respect to underrepresented groups and diverse populations. [Analyzing] See also HCI06. 

SP03 Analyze the impact of diversity on the computing profession. [Analyzing] 

SP04 Investigate social engineering attacks and the types of bad actors who might perform them. [Applying] 

SP05 Contrast stakeholder positions in a given scenario. [Analyzing] 

SP06 Analyze social tradeoffs in technical decisions. [Analyzing] 

SP07 Examine various ethics scenarios in computing. [Analyzing] 

SP08 Support the ethical responsibility of ensuring software correctness, reliability, and safety. [Evaluating] 

SP09 Compare professional codes of conduct from the ACM, IEEE Computer Society, and other organizations. [Analyzing] 

SP10 Differentiate the terms among intellectual property, fairuse, copyright, patent, trademark, and plagiarism. [Understanding] 

SP11 Discuss the rationale for legal protection of intellectual property. [Understanding] 

SP12 Outline the need for legal protection of personal privacy. [Analyzing] 

SP13 Investigate threats to privacy rights in personally identifiable information (PII). [Applying] 

SP14 Illustrate the role of data collection in the implementation of pervasive surveillance systems. [Applying] 

SP15 Analyze technological solutions to privacy concerns. [Analyzing] 

SP16 Use effective oral, written, electronic, and visual communication techniques with stakeholders. [Applying] 

SP17 Interpret the impact of both verbal and nonverbal cues during communication among team members. [Understanding] 

SP18 Develop technical artifacts. [Creating] 

SP19 Analyze case studies related to sustainable computing efforts. [Analyzing] 

SP20 Investigate laws applicable to computer crimes. [Appying] 

SP21 Examine the motivation and ramifications of cyber terrorism and criminal hacking. [Analyzing] 

SP22 Write a companywide security policy. [Applying] 
