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