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 

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] 
