Standards in this Framework
Standard | Description |
---|---|
I.A.1 | Understand computing as a way of expressing creativity, solving problems, enabling communication, and fostering innovation in a variety of fields and careers |
I.A.1.a | recognize that computers can be used to showcase creativity |
I.A.1.b | recognize the benefits of using computers to solve problems |
I.A.1.c | provide examples of how computers enable communication and collaboration |
I.A.1.d | provide examples of how computers foster innovation |
I.A.2 | Know the obstacles to equal access to computing among different groups and the impact of those obstacles |
I.A.2.a | identify obstacles to equal access to computing among different groups (e.g., groups defined by gender, socioeconomic status, disability/accessibility needs) and the impact of those obstacles |
I.A.2.b | identify factors that contribute to the digital divide |
I.A.2.c | match obstacles to equal access with effective solutions |
I.A.3 | Understand beneficial and harmful effects of computing innovations and the trade-offs between them |
I.A.3.a | analyze computing innovations in terms of their social, economic, and cultural impacts, both beneficial and harmful |
I.A.3.b | identify trade-offs between beneficial and harmful effects of computer innovations |
I.B.1 | Know different methods of protecting intellectual property rights and the trade-offs between them in a variety of contexts (e.g., Creative Commons, open source, copyright) |
I.B.1.a | using correct vocabulary, describe how different methods of protecting intellectual property rights work |
I.B.1.b | given a context, identify appropriate methods of protecting intellectual property rights |
I.B.1.c | identify and compare trade-offs between different methods of protecting intellectual property rights |
I.B.2 | Understand ethical and unethical computing practices and their social, economic, and cultural implications |
I.B.2.a | identify ethical and unethical computing practices in context |
I.B.2.b | describe the social, economic, and cultural implications of ethical and unethical computing practices |
I.B.2.c | identify the conditions under which a given computing practice is ethical or legal |
I.B.3 | Know privacy and security issues regarding the acquisition, use, and disclosure of information in a digital world |
I.B.3.a | using correct vocabulary, describe privacy and security issues |
I.B.3.b | using correct vocabulary, describe privacy and security issues |
I.B.3.c | describe trade-offs between local and cloud-based data storage |
I.B.3.d | identify methods that digital services use to collect information about users |
II.A.1 | Understand abstraction as a foundation of computer science |
II.A.1.a | identify, create, or complete the correct ordering, from low to high, of an abstraction hierarchy |
II.A.1.b | identify abstractions in context |
II.A.1.c | identify details that can be removed from a solution in order to generalize it |
II.A.2 | Know how to use pattern recognition, problem decomposition, and abstraction to develop an algorithm |
II.A.2.a | given a table of values or other data source, identify the patterns in the data and identify algorithms that could produce the patterns |
II.A.2.b | identify components that could be part of an algorithm to solve a problem |
II.A.2.c | identify actions and actors when decomposing a problem |
II.A.2.d | identify appropriate decomposition strategies |
II.A.3 | Understand number base conversion and binary, decimal, and hexadecimal number systems |
II.A.3.a | convert between number bases |
II.A.3.b | analyze and compare representations of numbers in different bases |
II.A.4 | Understand how to develop and analyze algorithms expressed in multiple formats (e.g., natural language, flowcharts, pseudocode) |
II.A.4.a | interpret diagrams that describe algorithms, given an explanation of the symbols used |
II.A.4.b | compare algorithms written in multiple formats |
II.A.4.c | trace and analyze algorithms written in different formats |
II.A.4.d | identify correct sequencing of steps in an algorithm and errors in sequencing |
II.B.1 | Be familiar with the limitations of computing in terms of time, space, and solvability as well as with the use of heuristic solutions that can address these limitations |
II.B.1.a | identify and compare algorithms that are linear, quadratic, exponential, or logarithmic |
II.B.1.b | recognize the existence of problems that cannot be solved by a computer |
II.B.1.c | in context, identify factors that prevent a problem from being solvable |
II.B.1.d | identify situations where heuristic solutions are useful |
II.B.1.e | in context, identify space and time limitations of computational solutions to problems |
II.B.2 | Understand searching and sorting algorithms; can analyze sorting algorithms for correctness and can analyze searching algorithms for correctness and efficiency |
II.B.2.a | trace algorithms and predict output and intermediate results |
II.B.2.b | calculate the number of comparisons required for linear and binary search algorithms |
II.B.3 | Understand simple recursive algorithms (e.g., n factorial, sum of first n integers) |
II.B.3.a | trace simple recursive algorithms |
II.B.3.b | provide missing steps in incomplete simple recursive algorithms |
II.B.3.c | identify parts of a recursive algorithm (e.g., base or stopping condition, recursive call) |
II.B.3.d | identify errors in simple recursive algorithms |
II.B.3.e | identify an iterative algorithm that is equivalent to a recursive algorithm |
II.B.4 | Be familiar with the use of randomization in computing |
II.B.4.a | identify appropriate uses of randomization in a variety of applications |
II.B.4.b | identify the difference between random and pseudorandom numbers |
III.A.1 | Understand how to write and modify computer programs in a text-based programming language |
III.A.1.a | describe what a program does or be able to choose the code segment that correctly implements a given intended purpose |
III.A.1.b | identify missing code in a code segment with a stated intended purpose |
III.A.1.c | place statements in appropriate order to create a correct program |
III.A.1.d | identify how changing one part of a code segment will affect the output |
III.A.2 | Understand how to analyze computer programs in terms of correctness |
III.A.2.a | trace code and indicate the output printed or the value of variables after code segment execution |
III.A.2.b | indicate the inputs that produce given outputs for a code segment |
III.A.2.c | describe what a program does or choose the code segment that correctly implements a given intended purpose |
III.A.2.d | identify valid preconditions and postconditions |
III.A.2.e | compare two code segments or algorithm |
III.A.2.f | identify the type of error produced by a code segment (i.e., syntax, runtime, compile-time, overflow, round-off, logic) |
III.A.2.g | identify errors in incorrect code and changes that can be made to correct them |
III.A.3 | Know the concepts of extensibility, modifiability, and reusability |
III.A.3.a | identify the meaning of the terms |
III.A.3.b | identify functionally equivalent statements or code segments that differ in one of these three ways |
III.A.3.c | identify situations where the use of constants or variables would be preferred over hard-coded values |
III.A.3.d | identify opportunities for parameterization |
III.A.3.e | choose code that improves on given code by making it more extensible, modifiable, or reusable |
III.A.3.f | identify changes that would improve a given code segment |
III.A.4 | Understand the three basic constructs used in programming: sequence, selection, and iteration |
III.A.4.a | trace code and indicate the output printed or the value of variables after code segment execution |
III.A.4.b | indicate inputs that produce given outputs for a code segment |
III.A.4.c | describe what a program does or choose the code segment that correctly implements a given intended purpose |
III.A.4.d | identify missing code in a code segment with a stated intended purpose |
III.A.4.e | identify equivalent statements or code segments |
III.A.4.f | identify the three constructs when used in code |
III.A.4.g | identify which of the constructs are needed to implement given functionality |
III.A.4.h | convert code that does not use iteration to equivalent code that uses iteration |
III.A.5 | Understand how to use standard operators (i.e., assignment, arithmetic, relational, logical) and operator precedence to write programs |
III.A.5.a | trace code and indicate the output displayed or the value of variables after code segment execution |
III.A.5.b | indicate inputs that produce given outputs for a code segment |
III.A.5.c | describe what a program does or choose the code segment that correctly implements a stated intended purpose |
III.A.5.d | identify missing code in a code segment with a stated intended purpose |
III.A.5.e | identify equivalent statements or code segments |
III.A.5.f | place statements in appropriate order to create a correct program |
III.A.5.g | use Boolean algebra to identify equivalent Boolean expressions |
III.A.5.h | write a Boolean expression equivalent to given code, or identify code equivalent to a given Boolean expression or English description |
III.A.5.i | identify the correct implementation of a given formula, including formulas with fractions |
III.A.5.j | evaluate expressions that include arithmetic operations |
III.A.6 | Understand how to use variables and a variety of data types |
III.A.6.a | identify variables and data types (e.g., integers, floating point, string, Booleans, arrays/lists) |
III.A.6.b | identify the need for type conversion |
III.A.6.c | trace code and indicate the output printed or the value of variables after code segment execution |
III.A.6.d | indicate the inputs that produce given outputs for a code segment |
III.A.6.e | describe what a program does or choose the code segment that correctly implements a stated intended purpose |
III.A.6.f | identify missing code in a code segment with a stated intended purpose |
III.A.6.g | identify equivalent statements or code segment |
III.A.6.h | place statements in appropriate order to create a correct program |
III.A.6.i | describe the difference between integer and floating point numeric data types |
III.A.6.j | describe the difference between integer and floating point division |
III.A.6.k | describe the benefits of the use of each data type |
III.A.6.l | distinguish between global and local scope |
III.A.6.m | identify the most appropriate data type in a given context |
III.A.6.n | identify the correct sequence of string operations to produce a given output |
III.B.1 | Understand how to write and call procedures with parameters and return values |
III.B.1.a | trace code and indicate the output printed or the value of variables after code segment execution |
III.B.1.b | indicate inputs that produce given outputs for a code segment |
III.B.1.c | describe what a program does or choose the code segment that correctly implements a stated intended purpose |
III.B.1.d | identify missing code in a code segment with a stated intended purpose |
III.B.1.e | identify equivalent statements or code segments |
III.B.1.f | place statements in appropriate order to create a correct program |
III.B.1.g | trace code when references to objects and arrays are passed to procedures |
III.B.1.h | trace code that includes nested procedure calls |
III.B.10 | Be familiar with the features and capabilities of integrated development environments (IDEs) |
III.B.10.a | identify components of IDEs |
III.B.10.b | identify benefits and drawbacks of using IDEs |
III.B.10.c | identify the costs and benefits of context editors |
III.B.11 | Be familiar with the differences between low- and high-level programming languages |
III.B.11.a | identify characteristics of low- and high-level languages |
III.B.12 | Be familiar with different programming paradigms |
III.B.12.a | identify the terminology of procedural programming |
III.B.12.b | identify the terminology of object-oriented programming |
III.B.12.c | compare programming paradigms |
III.B.13 | Know object-oriented programming concepts |
III.B.13.a | identify classes, instance variables, and methods given a diagram |
III.B.13.b | identify the benefits of inheritance and encapsulation |
III.B.13.c | identify distinctions between overloading and overriding |
III.B.14 | Be familiar with program compilation and program interpretation |
III.B.14.a | identify differences between compilation and interpretation |
III.B.14.b | identify differences between source code and object code |
III.B.2 | Know the concepts of event-driven programs that respond to external events (e.g., sensors, messages, clicks) |
III.B.2.a | trace code and indicate the output printed or the value of variables after code segment execution |
III.B.2.b | indicate inputs that produce given outputs for a code segment |
III.B.2.c | describe what a program does or choose the code segment that correctly implements a stated intended purpose |
III.B.2.d | identify missing code in a code segment with a stated intended purpose |
III.B.2.e | identify possible errors due to asynchronous events |
III.B.2.f | identify aspects of concurrency in event-driven programming |
III.B.3 | Be familiar with usability and user experience (e.g., ease of use and accessibility) |
III.B.3.a | identify code that improves on given code in terms of usability or user experience |
III.B.3.b | identify meaningful error messages |
III.B.3.c | identify features that improve accessibility |
III.B.4 | Be familiar with dictionaries/maps, stacks, and queues |
III.B.4.a | identify a data structure based on a description of behavior or appropriate use |
III.B.4.b | given goals, constraints, or context, identify the most appropriate data structure |
III.B.4.c | trace code that uses a particular data structure |
III.B.5 | Understand how to use debugging techniques and appropriate test cases |
III.B.5.a | identify which test cases are most useful for given code |
III.B.5.b | differentiate between different types of errors (e.g., overflow, round-off, syntax, runtime, compile-time, logic) |
III.B.5.c | describe useful debugging techniques (e.g., where to put print statements) |
III.B.5.d | differentiate between empirical testing and proof |
III.B.5.e | identify errors in code and solutions to those errors |
III.B.6 | Be familiar with characteristics of well-documented computer programs that are usable, readable, and modular |
III.B.6.a | identify characteristics of good documentation |
III.B.6.b | identify good and poor documentation practices in context |
III.B.7 | Be familiar with techniques to obtain and use feedback to produce high-quality code (e.g., code reviews, peer feedback, end user feedback) |
III.B.7.a | identify situations in which each of the three listed techniques are useful |
III.B.8 | Know how to use libraries and APIs |
III.B.8.a | identify correct call(s) and use of return values given an A P I definition |
III.B.8.b | identify reasons to use or not use libraries in place of writing original code |
III.B.8.c | identify applications (e.g., math libraries, random number generation) that use APIs |
III.B.9 | Understand programming techniques to validate correct input and detect incorrect input |
III.B.9.a | identify effective input data validation strategies |
III.B.9.b | compare data validation (proper range and format) and data verification (e.g., password verification) |
III.B.9.c | identify improvements to code for which data validation is required |
IV.A.1 | Understand bits as the universal medium for expressing digital information |
IV.A.1.a | perform calculations, using bits and bytes |
IV.A.1.b | determine the number of bits and bytes required to store a given amount of data |
IV.A.1.c | given the description of an encoding scheme, encode or decode data |
IV.A.1.d | describe lossy and lossless data compression |
IV.A.1.e | explain why binary numbers are fundamental to the operation of computer systems |
IV.A.2 | Be familiar with concepts of data encryption and decryption |
IV.A.2.a | distinguish between encoding and encryption |
IV.A.2.b | identify trade-offs in the use of data encryption |
IV.A.3 | Know how to use computational tools, including spreadsheets, to analyze data in order to discover, explain, and visualize patterns, connections, and trends |
IV.A.3.a | transform data to make it more useful |
IV.A.3.b | identify specific data or characteristics of specific data that need to be removed or modified before an entire data set can be used |
IV.A.3.c | describe the use of spreadsheet operations (e.g., formulas, filters, sorts, charts, graphs) to analyze and visualize data |
IV.B.1 | Be familiar with the use of computing in simulation and modeling |
IV.B.1.a | describe questions that can be answered with a given simulation, or explain what data and process are required in a simulation in order to answer a given question |
IV.B.1.b | trace code in a simulation context |
IV.B.1.c | identify missing code in a simulation context |
IV.B.1.d | identify the impact of changes to simulations (e.g., more or fewer variables, more or less data) |
IV.B.1.e | identify applications of simulation and modeling |
IV.B.2 | Be familiar with methods to store, manage, and manipulate data |
IV.B.2.a | use terminology and concepts of files and databases |
IV.B.2.b | identify measures of file size (e.g., byte, kilo, mega, giga, tera, peta) |
IV.B.2.c | identify issues connected with the storage requirements of computing applications, including scale, redundancy, and backup |
IV.B.3 | Be familiar with a variety of computational methods for data collection, aggregation, and generation |
IV.B.3.a | identify the benefits of working with publicly available data sets |
IV.B.3.b | identify the types of data generated by surveys and sensors |
IV.B.3.c | identify examples of crowdsourcing and citizen science |
IV.B.3.d | identify appropriate data-collection methods for a given context and purpose |
V.A.1 | Know that operating systems are programs that control and coordinate interactions between hardware and software components |
V.A.1.a | identify hardware components and their functions |
V.A.1.b | identify software components and their functions |
V.A.1.c | identify common operating systems tasks |
V.A.1.d | identify resource issues that have an impact on functionality |
V.A.2 | Be familiar with computing systems embedded in everyday objects (e.g., Internet of Things [IoT], ATMs, medical devices) |
V.A.2.a | describe what an embedded system is |
V.A.2.b | define what the IoT is and how it is used |
V.A.2.c | describe how sensors are used in embedded systems |
V.A.3 | Know the capabilities, features, and uses of different types of computing systems (e.g., desktop, mobile, cluster) |
V.A.3.a | identify capabilities, features, and uses for each type of computer system |
V.A.3.b | identify criteria to evaluate and compare computing systems |
V.A.4 | Be familiar with computers as layers of abstraction from hardware (e.g., logic gates, chips) to software (e.g., system software, applications) |
V.A.4.a | identify appropriate abstraction layers for hardware and software components |
V.A.5 | Be familiar with the steps required to execute a computer program (fetch-decode-execute cycles) |
V.A.5.a | describe what happens during fetch, decode, and execute, including the order of the steps in the cycle |
V.A.6 | Be familiar with trade-offs between local, network, and cloud computing and storage |
V.A.6.a | identify advantages and disadvantages in terms of performance, cost, security, reliability, and collaboration |
V.A.6.b | identify means of storing binary data |
V.A.7 | Be familiar with communication between devices |
V.A.7.a | identify and compare wireless communication systems |
V.A.7.b | identify and compare wired communication systems |
V.A.7.c | identify and compare network types |
V.B.1 | Know components of networks |
V.B.1.a | identify network hardware devices and their functions |
V.B.1.b | describe possible abstraction models of networks |
V.B.2 | Be familiar with factors that have an impact on network functionality |
V.B.2.a | define basic terminology (e.g., bandwidth, load, latency) |
V.B.2.b | estimate necessary bandwidth and data size for a given situation |
V.B.2.c | identify critical resources for a given situation |
V.B.3 | Be familiar with how Internet and Web protocols work |
V.B.3.a | describe the purpose of protocols and identify common Internet and Web protocols |
V.B.3.b | compare IPv4 and IPv6 |
V.B.3.c | identify and describe the basic parts of a U R L (e.g., protocol, subdomain, domain name, port, path) |
V.B.3.d | describe the hierarchical structure of names in the domain name system (DNS) |
V.B.3.e | describe the purpose and function of I P addressing |
V.B.3.f | identify how Internet protocols address reliability, redundancy, and error handling |
V.B.4 | Be familiar with digital and physical strategies for maintaining security |
V.B.4.a | identify characteristics of strong passwords (e.g., length, bits per character) |
V.B.4.b | identify digital and physical security strategies |
V.B.4.c | identify trade-offs in the use of security measures (e.g., encryption, decryption, digital signatures and certificates) |
V.B.5 | Be familiar with concepts of cybersecurity |
V.B.5.a | identify and define the five pillars of cybersecurity: confidentiality, integrity, availability, nonrepudiation, and authentication |
V.B.6 | Be familiar with the components that make up the Web (e.g., HTTP, HTML, browsers, servers, clients) |
V.B.6.a | identify the uses of markup languages |
V.B.6.b | identify the purposes of browsers, servers, and clients |