Standards in this Framework
Standards Mapped
Mapped to Course
Standard | Lessons |
---|---|
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 |
|