Please enable JavaScript to use CodeHS

Standards Mapping

for AP Computer Science Principles 2020

332

Standards in this Framework

332

Standards Mapped

100%

Mapped to Course

Standard Lessons
CRD-1.A.1
A computing innovation includes a program as an integral part of its function.
  1. 3.2 Uses of Programs
  2. 15.1 The Impacts of Computing
CRD-1.A.2
A computing innovation can be physical (i.e., self-driving car), non-physical computing software (i.e., picture editing software), or non-physical computing concepts (i.e., eCommerce).
  1. 3.2 Uses of Programs
  2. 15.1 The Impacts of Computing
CRD-1.A.3
Effective collaboration produces a computing innovation that reflects the diversity of talents and perspectives of those who designed it.
  1. 2.1 Practice PT: Pair-Programming Paint!
CRD-1.A.4
Collaboration that includes diverse perspectives helps to avoid bias in the development of computing innovations.
  1. 2.1 Practice PT: Pair-Programming Paint!
  2. 18.1 Intro to Design Thinking
  3. 18.3 Test
CRD-1.A.5
Consultation and communication with users is an important aspect of the development of computing innovations.
  1. 18.1 Intro to Design Thinking
  2. 18.3 Test
CRD-1.A.6
Research gathered from users can be used to understand the purpose of a program from diverse perspectives in order to develop a program that can be used to fully incorporate these perspectives.
  1. 18.1 Intro to Design Thinking
  2. 18.3 Test
CRD-1.B.1
Online tools support collaboration by allowing programmers to virtually share and provide feedback on ideas and documents.
  1. 18.4 Project Prep and Development
CRD-1.B.2
Common models such as pair programming exist to facilitate collaboration.
  1. 2.1 Practice PT: Pair-Programming Paint!
CRD-1.C.1
Effective collaborative teams practice interpersonal skills including but not limited to: communication skills; consensus building; conflict resolution; negotiation.
  1. 2.1 Practice PT: Pair-Programming Paint!
CRD-2.A.1
The purpose of computing innovations is to solve problems or pursue interests through creative expression.
  1. 18.1 Intro to Design Thinking
CRD-2.A.2
An understanding of the purpose of a computing innovation provides developers with an improved ability to develop the computing innovation.
  1. 18.1 Intro to Design Thinking
CRD-2.B.1
A program is a collection of program statements that performs a specific task when run by a computer. A program is often referred to as software.
  1. 1.2 Introduction to Programming With Karel
  2. 3.1 What is Code
CRD-2.B.2
A code segment refers to a collection of program statements that are part of a program.
  1. 1.8 Commenting Your Code
CRD-2.B.3
A program needs to work for a variety of inputs and situations.
  1. 5.1 Functions and Parameters 1
CRD-2.B.4
The behavior of a program is how a program functions during execution and is often described by how a user interacts with it.
  1. 3.6 Basic Math in JavaScript
CRD-2.B.5
A program can be described broadly by what it does or in more detail by both what the program does and how the program statements accomplish this function.
  1. 1.8 Commenting Your Code
CRD-2.C.1
Program input is data that are sent to a computer for processing by a program. Input can come in a variety of forms, such as tactile, audible, visual, or text.
  1. 8.1 Intro to Digital Information
CRD-2.C.2
An event is associated with an action and supplies input data to a program.
  1. 3.8 Mouse Events: Mouse Clicked
  2. 4.5 Key Events
CRD-2.C.3
Events can be generated when a key is pressed, a mouse is clicked, a program is started, or by any other defined action that affects the flow of execution.
  1. 3.8 Mouse Events: Mouse Clicked
  2. 4.5 Key Events
CRD-2.C.4
Inputs usually affect the output produced by a program.
  1. 5.1 Functions and Parameters 1
CRD-2.C.5
In event-driven programming, program statements are executed when triggered instead of through the sequential flow of control.
  1. 3.8 Mouse Events: Mouse Clicked
  2. 4.5 Key Events
CRD-2.C.6
Input can come from a user or other applications.
  1. 3.5 User Input
  2. 5.1 Functions and Parameters 1
CRD-2.D.1
Program output is any data that are sent from a program to a device. Program output can come in a variety of forms, such as tactile, audible, visual, or text.
  1. 8.1 Intro to Digital Information
CRD-2.D.2
Program output is usually based on a program’s input or prior state (such as internal values).
  1. 3.5 User Input
  2. 5.1 Functions and Parameters 1
CRD-2.E.1
A development process could be ordered and intentional, or exploratory in nature.
  1. 18.1 Intro to Design Thinking
CRD-2.E.2
There are multiple development processes. The following phases are commonly used when developing a program: investigating and reflecting; designing; prototyping; testing.
  1. 18.1 Intro to Design Thinking
  2. 18.2 Prototype
  3. 18.3 Test
CRD-2.E.3
A development process that is iterative requires refinement and revision based on feedback, testing or reflection throughout the process. This may require revisiting earlier phases of the process.
  1. 18.2 Prototype
CRD-2.E.4
A development process that is incremental is one that breaks the problem into smaller pieces, and makes sure each piece works before adding it to the whole.
  1. 18.1 Intro to Design Thinking
CRD-2.F.1
The design of a program incorporates investigation to determine the requirements.
  1. 18.1 Intro to Design Thinking
CRD-2.F.2
Investigation in a development process is useful in understanding, identifying the constraints, concerns, and interests of the people who will use the program.
  1. 18.1 Intro to Design Thinking
CRD-2.F.3
Some ways investigation can be performed are as follows: collecting data through surveys; user testing; interviews; direct observations.
  1. 13.3 Data Collection & Limitations
  2. 18.3 Test
CRD-2.F.4
Program requirements describe how a program functions, and may include a description of user interactions that a program must provide.
  1. 18.2 Prototype
CRD-2.F.5
A program specification defines the requirements for the program.
  1. 2.1 Practice PT: Pair-Programming Paint!
  2. 18.1 Intro to Design Thinking
CRD-2.F.6
In a development process, the design phase outlines how to accomplish a given program specification.
  1. 2.1 Practice PT: Pair-Programming Paint!
  2. 18.1 Intro to Design Thinking
CRD-2.F.7
The design phase of a program includes: brainstorming; planning and storyboarding; organizing the program into modules and functional components; the creation of diagrams that represent the layouts of the user interface; the development of a testing strategy for the program.
  1. 2.1 Practice PT: Pair-Programming Paint!
  2. 18.1 Intro to Design Thinking
  3. 18.2 Prototype
  4. 18.3 Test
CRD-2.G.1
Program documentation is a written description of the function of a code segment, event, procedure, or program and how it was developed.
  1. 1.9 Abstraction
  2. 1.10 Super Karel
  3. 2.1 Practice PT: Pair-Programming Paint!
CRD-2.G.2
Comments are a form of program documentation written into the program to be read by people and do not impact how a program runs.
  1. 1.8 Commenting Your Code
CRD-2.G.3
Programmers should document a program throughout the process of developing a program.
  1. 2.1 Practice PT: Pair-Programming Paint!
CRD-2.G.4
Program documentation helps in developing and maintaining correct programs when working individually or in collaborative programming environments.
  1. 2.1 Practice PT: Pair-Programming Paint!
CRD-2.G.5
Not all programming environments support comments, so other methods of documentation may be required.
  1. 2.1 Practice PT: Pair-Programming Paint!
CRD-2.H.1
It is important to acknowledge any code segments that were developed collaboratively or by another source.
  1. 2.1 Practice PT: Pair-Programming Paint!
CRD-2.H.2
Acknowledgement of code segment(s) written by someone else and used in a program can be in the program documentation. The acknowledgement should include the origin or original author’s name.
  1. 2.1 Practice PT: Pair-Programming Paint!
CRD-2.I.1
A logic error is a mistake in the algorithm or program that causes it to behave incorrectly or unexpectedly.
  1. 1.5 Functions in Karel
  2. 1.16 Debugging Strategies
CRD-2.I.2
A syntax error is a mistake in the program where the rules of the programming language are not followed.
  1. 1.5 Functions in Karel
  2. 1.16 Debugging Strategies
CRD-2.I.3
A run-time error is a mistake in the program that occurs during the execution of a program. Programming languages define their own run-time errors.
  1. 1.16 Debugging Strategies
CRD-2.I.4
An overflow error is an error that occurs when the computer attempts to handle a number that is outside of the defined range of values can be represented.
  1. 8.2 Number Systems
CRD-2.I.5
The following are effective ways to find and correct errors: test-cases; hand-tracing; visualizations; debuggers; adding extra output statement.
  1. 1.5 Functions in Karel
  2. 1.16 Debugging Strategies
  3. 3.6 Basic Math in JavaScript
CRD-2.J.1
In the development process, testing uses defined inputs to ensure that an algorithm or program is producing the expected outcomes. Programmers use the result from testing to revise their algorithms or programs.
  1. 3.6 Basic Math in JavaScript
CRD-2.J.2
Defined inputs used to test a program should demonstrate the different expected outcomes that are at or just beyond the extremes, minimum and maximum, of input data.
  1. 3.6 Basic Math in JavaScript
  2. 8.2 Number Systems
CRD-2.J.3
Program requirements are needed to identify appropriate defined inputs for testing.
  1. 3.6 Basic Math in JavaScript
  2. 8.2 Number Systems
DAT-1.A.1
Data are values that can be stored in variables, passed as input to procedures and returned from procedures, items of lists, or standalone constant values.
  1. 3.4 Variables
  2. 3.7 Using Graphics in JavaScript
  3. 7.1 Intro to Lists/Arrays
DAT-1.A.2
Computing devices represent data digitally, which means that the lowest level components of any value are bits.
  1. 1.9 Abstraction
  2. 8.1 Intro to Digital Information
DAT-1.A.3
A “bit” is shorthand for “binary digit,” and is either 0 or 1.
  1. 8.1 Intro to Digital Information
  2. 8.2 Number Systems
DAT-1.A.4
A “byte” is 8 bits.
  1. 8.2 Number Systems
DAT-1.A.5
Abstraction is the process of reducing complexity by focusing on the main idea. By hiding details irrelevant to the question at hand and bringing together related and useful details, abstraction reduces complexity and allows one to focus on the idea.
  1. 1.9 Abstraction
  2. 8.1 Intro to Digital Information
DAT-1.A.6
Bits are grouped to represent abstractions. These abstractions include, but are not limited to numbers, characters, and color.
  1. 8.1 Intro to Digital Information
DAT-1.A.7
The same sequence of bits may represent different types of data in different contexts.
  1. 8.1 Intro to Digital Information
DAT-1.A.8
Analog data are data with values that change continuously, or smoothly, over time. Some examples of analog data include music, colors of a painting, or position of a sprinter during a race.
  1. 8.9 Lossy Compression
DAT-1.A.9
The use of digital data to approximate real-world analog data is an example of abstraction.
  1. 8.9 Lossy Compression
DAT-1.A.10
Analog data can be closely approximated digitally using a sampling technique, which means measuring values of the analog signal at regular intervals (usually in time or space) called samples. The samples are measured to figure out the exact bits required to store each sample.
  1. 8.9 Lossy Compression
DAT-1.B.1
In many programming languages, the fixed number of bits used to represent integers limits the range of integer values and mathematical operations on those values; this limitation can result in overflow or other errors.
  1. 8.2 Number Systems
DAT-1.B.2
Other programming languages provide an abstraction through which the size of representable integers is limited only by the size of the computer's memory; this is the case for the language defined in the exam reference sheet.
  1. 8.2 Number Systems
DAT-1.B.3
In programming languages, the fixed number of bits used to represent real numbers limits the range of values and mathematical operations on those values; this limitation can result in round-off and other errors. Real numbers can only be approximated in computer storage. EXCLUSION STATEMENT (EK DAT-1.B.3): Specific range limitations for real numbers is outside the scope of this course and the AP Exam.
  1. 8.2 Number Systems
DAT-1.C.1
Number bases, including binary and decimal, are used to represent data.
  1. 8.2 Number Systems
DAT-1.C.2
Binary (base 2) uses only combinations of the digits zero and one.
  1. 8.2 Number Systems
DAT-1.C.3
Decimal (base 10) uses only combinations of the digits 0 – 9.
  1. 8.2 Number Systems
DAT-1.C.4
As with decimal, a digit’s position within the binary sequence determines its numeric value. The numeric value is equal to the bits value multiplied by the place value of the position.
  1. 8.2 Number Systems
DAT-1.C.5
The place value of each position is determined by the base raised to the power of the position. Positions are numbered starting at the rightmost position with 0 and increasing by 1 for each subsequent position to the left.
  1. 8.2 Number Systems
DAT-1.D.1
Data compression can reduce the size (number of bits) of the data transmitted or stored.
  1. 8.8 Data Compression
DAT-1.D.2
Fewer bits does not necessarily mean less information.
  1. 8.8 Data Compression
DAT-1.D.3
The amount of reduction in bits by compression depends on both the amount of redundancy in the original data representation and the compression algorithm applied.
  1. 8.8 Data Compression
DAT-1.D.4
Lossless data compression algorithms can usually reduce the number of bits stored or transmitted while guaranteeing complete reconstruction of the original data.
  1. 8.8 Data Compression
DAT-1.D.5
Lossy data compression algorithms can significantly reduce the number of bits stored or transmitted, but only allow the reconstruction of an approximation of the original data.
  1. 8.9 Lossy Compression
DAT-1.D.6
Lossy data compression algorithms can usually reduce the number of bits stored or transmitted more than lossless compression.
  1. 8.9 Lossy Compression
DAT-1.D.7
In situations where quality or ability to reconstruct the original is maximally important, lossless compression algorithms are typically chosen.
  1. 8.9 Lossy Compression
DAT-1.D.8
In situations where minimizing data size or short transmission time is maximally important, lossy compression algorithms are typically chosen.
  1. 8.9 Lossy Compression
DAT-2.A.1
Information is the collection of facts and patterns extracted from data.
  1. 13.1 Getting Started with Data
  2. 13.2 Visualizing and Interpreting Data
DAT-2.A.2
Data provide opportunities for identifying trends, making connections, and addressing problems.
  1. 13.1 Getting Started with Data
  2. 13.2 Visualizing and Interpreting Data
DAT-2.A.3
Digitally processed data may show correlation between variables. A correlation found in data does not necessarily imply a causal relationship exists. Often additional research is needed to understand the exact nature of the relationship.
  1. 13.3 Data Collection & Limitations
DAT-2.A.4
Often a single data source does not contain the necessary data to draw a conclusion. It may be required to combine data from a variety of sources to formulate a conclusion.
  1. 13.3 Data Collection & Limitations
DAT-2.B.1
Metadata are data about data. Metadata is associated with the primary data; the primary data may be an image, a Web page, or other complex object.
  1. 11.7 Packets and Protocols
  2. 13.3 Data Collection & Limitations
DAT-2.B.2
Changes and deletions made to metadata do not change the primary data.
  1. 13.3 Data Collection & Limitations
DAT-2.B.3
Metadata are used for finding, organizing and managing information.
  1. 11.7 Packets and Protocols
  2. 13.3 Data Collection & Limitations
DAT-2.B.4
Metadata can increase the effective use of data or data sets by providing additional information.
  1. 13.3 Data Collection & Limitations
DAT-2.B.5
Metadata allows data to be structured and organized.
  1. 11.7 Packets and Protocols
  2. 13.3 Data Collection & Limitations
DAT-2.C.1
The ability to process data depends on the capabilities of the users and their tools. Therefore, a data set can be considered to be a large data set based on the capabilities of some users, but not necessarily for all users.
  1. 13.1 Getting Started with Data
DAT-2.C.2
Data pose challenges regardless of size. Such as: the need to clean data; incomplete data; invalid data; or the need to combine data sources.
  1. 13.3 Data Collection & Limitations
DAT-2.C.3
Depending on how data are being collected, the data may not be uniform. For example, if users enter data into an open field, the way they choose to abbreviate, spell or capitalize something may vary from user to user.
  1. 13.3 Data Collection & Limitations
DAT-2.C.4
Cleaning data is a process that makes the data uniform without changing its meaning. For example, replacing all abbreviations, spellings and capitalizations with the same word.
  1. 13.3 Data Collection & Limitations
DAT-2.C.5
Problems of bias are often caused by the type or source of data that is being collected. Bias is not eliminated by simply collecting more data.
  1. 13.3 Data Collection & Limitations
DAT-2.C.6
The size of the data set affects the amount of information that can be extracted from it.
  1. 13.3 Data Collection & Limitations
DAT-2.C.7
Large data sets are difficult to process using a single computer and may require parallel systems.
  1. 11.8 Sequential, Parallel & Distributed Computing
DAT-2.C.8
Scalability of systems is an important consideration when working with large data sets, since the size or scale of a system affects how that data set can be processed and stored.
  1. 11.8 Sequential, Parallel & Distributed Computing
DAT-2.D.1
Programs can be used to process data to acquire information.
  1. 13.1 Getting Started with Data
  2. 13.2 Visualizing and Interpreting Data
DAT-2.D.2
Tables, diagrams, and textual displays or other visual tools can be used in communicating insight and knowledge gained from data.
  1. 13.2 Visualizing and Interpreting Data
DAT-2.D.3
Search tools are useful for efficiently finding information.
  1. 7.4 Array Length and Looping Through Arrays
  2. 13.1 Getting Started with Data
  3. 13.2 Visualizing and Interpreting Data
DAT-2.D.4
Data filtering systems are important tools for finding information and recognizing patterns in the data.
  1. 7.4 Array Length and Looping Through Arrays
  2. 13.1 Getting Started with Data
  3. 13.2 Visualizing and Interpreting Data
DAT-2.D.5
Programs, including spreadsheets, help to efficiently organize and find trends in information.
  1. 13.2 Visualizing and Interpreting Data
DAT-2.D.6
Some processes that can be used to extract or modify information from data include: transforming every element of a data set, such as doubling every element in a list, or extracting the parent’s email from every student record; filtering a data set, such as keeping only positive numbers from a list of numbers, or keeping only students who signed up for band from all the student records; combining or comparing data in some way, such as adding up a list of numbers, or finding the student who has the highest GPA; OR visualize a data set through a chart, graph or other visual representation.
  1. 7.4 Array Length and Looping Through Arrays
  2. 13.2 Visualizing and Interpreting Data
  3. 13.3 Data Collection & Limitations
DAT-2.E.1
Programs are used in an iterative and interactive way when processing information to allow users to gain insight and knowledge.
  1. 13.2 Visualizing and Interpreting Data
DAT-2.E.2
Programmers can use programs to filter and clean digital data, thereby gaining insight and knowledge.
  1. 7.4 Array Length and Looping Through Arrays
  2. 13.1 Getting Started with Data
DAT-2.E.3
Combining data sources, clustering data, and classifying data are parts of the process of using programs to gain insight and knowledge from data.
  1. 13.2 Visualizing and Interpreting Data
DAT-2.E.4
Insight and knowledge can be obtained from translating and transforming digitally represented information.
  1. 7.4 Array Length and Looping Through Arrays
DAT-2.E.5
Patterns can emerge when data is transformed using programs.
  1. 7.4 Array Length and Looping Through Arrays
  2. 13.2 Visualizing and Interpreting Data
AAP-1.A.1
A variable is an abstraction inside the program that can hold a value. Each variable has associated data storage that represents one value at a time, but that value can be a list or other collection that in turn contains multiple values.
  1. 3.4 Variables
  2. 7.1 Intro to Lists/Arrays
AAP-1.A.2
Using meaningful variable names helps computer scientists understand what values are represented by the variable.
  1. 3.4 Variables
AAP-1.A.3
Some programming languages provide types to represent data, which are referenced using variables. These types include: numbers, Booleans, lists, and strings.
  1. 3.4 Variables
AAP-1.A.4
Some values are better suited to representation using one type of data rather than another.
  1. 3.4 Variables
AAP-1.B.1
The assignment operator allows a program to change the value represented by a variable.
  1. 3.4 Variables
AAP-1.B.2
The exam reference sheet provides the “←” operator to use for assignment. For example, a ← expression which evaluates expression and then assigns the result to the variable a.
  1. 3.4 Variables
AAP-1.B.3
The value stored in a variable will be the most recent value assigned. For example: a ← 1 b ← a a ← 2 display(b) still displays 1.
  1. 3.4 Variables
AAP-1.C.1
A list is an ordered sequence of elements. For example, [value1, value2, value3, …] where value1 is the first element, value 2 is the second element, value 3 is the third element, …
  1. 7.1 Intro to Lists/Arrays
AAP-1.C.2
An element is an individual value in a list that is assigned a unique index.
  1. 7.1 Intro to Lists/Arrays
AAP-1.C.3
An index is a common method for referencing the elements in a list or string using natural numbers.
  1. 7.1 Intro to Lists/Arrays
AAP-1.C.4
A string is an ordered sequence of characters.
  1. 3.5 User Input
AAP-1.D.1
Data abstraction provides a separation between the abstract properties of a data type and the concrete details of its representation.
  1. 7.3 Adding/Removing From an Array
AAP-1.D.2
Data abstractions manage complexity in the program by giving a collection of data a name without the specific details of the representation.
  1. 7.4 Array Length and Looping Through Arrays
AAP-1.D.3
Data abstractions can be created using lists.
  1. 7.4 Array Length and Looping Through Arrays
AAP-1.D.4
Developing a data abstraction to implement in a program can result in a program that is easier to develop and maintain.
  1. 7.4 Array Length and Looping Through Arrays
AAP-1.D.5
Data abstractions often contain different types of elements.
  1. 7.3 Adding/Removing From an Array
AAP-1.D.6
The use of lists allows multiple related items to be treated as a single value. Lists are referred to by different names, such as ‘array’, depending on the programming language. EXCLUSION STATEMENT(EK APP-1.D.6): The use of linked lists is outside the scope of this course and the AP Exam.
  1. 7.1 Intro to Lists/Arrays
AAP-1.D.7
The exam reference sheet provides the notation [value1, value2, value 3…] to create a list with those values as the first, second, third… items. For example, aList ← [value1, value2, value3,...] - creates a new list that contains the values value1, value2, value3, and … at indices 1, 2, 3, and … respectively and assigns it to aList. aList  [] – creates a new empty list and assigns it to aList. aList  bList – assigns a copy of the list bList to the list aList. For example, if bList contains [20, 40, 60], then aList will also contain [20, 40, 60] after the assignment.
  1. 7.1 Intro to Lists/Arrays
AAP-1.D.8
The exam reference sheet describes a list structure whose index values are 1 through the number of elements in the list, inclusive. For all list operations, if a list index is less than 1 or greater than the length of the list, an error message is produced and the program will terminate.
  1. 7.1 Intro to Lists/Arrays
AAP-2.A.1
An algorithm is a finite set of instructions that accomplish a specific task.
  1. 3.6 Basic Math in JavaScript
AAP-2.A.2
Beyond visual and textual programming languages, algorithms can be expressed in a variety of ways such as natural language, diagrams, and pseudocode.
  1. 3.1 What is Code
  2. 3.6 Basic Math in JavaScript
AAP-2.A.3
Algorithms executed by a program are implemented using programming languages.
  1. 3.1 What is Code
  2. 3.6 Basic Math in JavaScript
AAP-2.A.4
Every algorithm can be constructed using combinations of sequencing, selection, and iteration.
  1. 1.17 Karel Algorithms
  2. 3.6 Basic Math in JavaScript
AAP-2.B.1
Sequencing is the application of each step of an algorithm in the order in which the code statements are given.
  1. 1.17 Karel Algorithms
AAP-2.B.2
A code statement is a part of program code that expresses an action to be carried out.
  1. 1.17 Karel Algorithms
AAP-2.B.3
Expressions can consist of a value, a variable, operators, or procedure calls that return a value.
  1. 3.6 Basic Math in JavaScript
AAP-2.B.4
Expressions are evaluated to produce a single value.
  1. 3.6 Basic Math in JavaScript
AAP-2.B.5
The evaluation of expressions follows a set order of operations defined by the programming language.
  1. 3.6 Basic Math in JavaScript
AAP-2.B.6
Sequential statements execute in the order they appear in the code segment.
  1. 1.17 Karel Algorithms
AAP-2.B.7
Clarity and readability are important considerations when expressing an algorithm in a programming language.
  1. 1.17 Karel Algorithms
AAP-2.C.1
Arithmetic operators are part of most programming languages and include addition, subtraction, multiplication, division, and modulus operators.
  1. 3.6 Basic Math in JavaScript
AAP-2.C.2
The exam reference sheet provides a MOD b, which evaluates to the remainder when a is divided by b. Assume that a is an integer greater than or equal to 0 and b is an integer greater than 0. For example, 17 MOD 5 evaluates to 2.
  1. 3.6 Basic Math in JavaScript
AAP-2.C.3
The exam reference sheet provides the arithmetic operators +, -, *, /, and MOD. a + b; a – b; a * b; a / b; a MOD b; These are used to perform arithmetic on a and b. For example, 17 / 5 evaluates to 3.4.
  1. 3.6 Basic Math in JavaScript
AAP-2.C.4
The order of operations used in mathematics applies when evaluating expressions. The MOD operator has the same precedence as the * and / operators.
  1. 3.6 Basic Math in JavaScript
AAP-2.D.1
String concatenation joins together two or more strings end-to-end to make a new string.
  1. 3.6 Basic Math in JavaScript
AAP-2.D.2
A substring is part of an existing string.
  1. 3.6 Basic Math in JavaScript
AAP-2.E.1
A Boolean value is either true or false.
  1. 4.1 Booleans
AAP-2.E.2
The exam reference sheet provides the following relational operators =, ≠, >, <, ≥, and ≤. a = b; a ≠ b; a > b; a < b; a ≥ b; a ≤ b; These are used to test the relationship between two variables, expressions, or values. A comparison using a relational operator evaluates to a Boolean value. For example, a = b evaluates to true if a and b are equal; otherwise, it evaluates to false.
  1. 4.3 Comparison Operators
AAP-2.F.1
The exam reference sheet provides the following logic operators: NOT, AND, and OR, which evaluate to a Boolean value.
  1. 4.3 Comparison Operators
AAP-2.F.2
The exam reference sheet provides NOT condition, which evaluates to true if condition is false; otherwise it evaluates to false.
  1. 4.3 Comparison Operators
AAP-2.F.3
The exam reference sheet provides condition1 AND condition2, which evaluates to true if both condition1 and condition2 are true; otherwise it evaluates to false.
  1. 4.3 Comparison Operators
AAP-2.F.4
The exam reference sheet provides condition1 OR condition2, which evaluates to true if condition1 is true or if condition2 is true or if both condition1 and condition2 are true; otherwise it evaluates to false.
  1. 4.3 Comparison Operators
AAP-2.F.5
The operands for a logic operator are either a Boolean expression or a single Boolean value.
  1. 4.3 Comparison Operators
AAP-2.G.1
Selection determines which parts of an algorithm are executed based on a condition being true or false.
  1. 1.13 If/Else Statements
  2. 4.4 If Statements
AAP-2.H.1
Conditional statements or “if-statements” affect the sequential flow of control by executing different statements based on the value of a Boolean expression.
  1. 4.4 If Statements
AAP-2.H.2
The exam reference sheet provides IF(condition) {<block of statements> } in which the code in block of statements is executed if the Boolean expression condition evaluates to true; no action is taken if condition evaluates to false.
  1. 4.4 If Statements
AAP-2.H.3
The exam reference sheet provides IF(condition) { <first block of statements> } ELSE { <second block of statements> } in which the code in first block of statements is executed if the Boolean expression condition evaluates to true; otherwise, the code in second block of statements is executed.
  1. 4.4 If Statements
AAP-2.I.1
Nested conditional statements or “else if” statements consist of conditional statements within conditional statements.
  1. 4.4 If Statements
AAP-2.I.2
If the Boolean condition of the initial conditional statement evaluates to false, then the Boolean condition of the nested conditional statement is evaluated.
  1. 4.4 If Statements
AAP-2.J.1
Iteration is a repetitive portion of an algorithm. Iteration repeats until a given condition is met or a specified number of times.
  1. 1.14 While Loops in Karel
AAP-2.K.1
Iteration statements change the sequential flow of control by repeating a set of statements zero or more times until a stopping condition is met.
  1. 1.11 For Loops
AAP-2.K.2
The exam reference sheet provides REPEAT n TIMES { <block of statements> } in which the block of statements is executed n times.
  1. 4.10 While Loops
AAP-2.K.3
The exam reference sheet provides REPEAT UNTIL(condition) { <block of statements> } in which the code in block of statements is repeated until the Boolean expression condition evaluates to true.
  1. 4.10 While Loops
AAP-2.K.4
In REPEAT UNTIL(condition) iteration, an infinite loop occurs when the ending condition will never evaluate to true.
  1. 4.10 While Loops
AAP-2.K.5
In REPEAT UNTIL(condition) iteration, if the conditional evaluates to true initially, the loop body is not executed at all due to the condition being checked before the loop.
  1. 4.10 While Loops
AAP-2.L.1
Algorithms can be written in different ways and still accomplish the same tasks.
  1. 4.10 While Loops
AAP-2.L.2
Algorithms that appear similar can yield different side-effects or results.
  1. 4.10 While Loops
AAP-2.L.3
Some selections can be written as equivalent Boolean expressions.
  1. 4.4 If Statements
AAP-2.L.4
Some Boolean expressions can be written as equivalent selections.
  1. 4.4 If Statements
AAP-2.L.5
Different algorithms can be developed or used to solve the same problem.
  1. 4.10 While Loops
AAP-2.M.1
Algorithms can be created from an idea, by combining existing algorithms, or by modifying existing algorithms.
  1. 1.7 Top Down Design and Decomposition in Karel
AAP-2.M.2
Knowledge of existing algorithms can help in constructing algorithms. Some existing algorithms include: determining the maximum or minimum value of 2 or more numbers; or computing the sum or average of 2 or more numbers; or identifying if an integer is or is not evenly divisible by another integer; or determining a robot’s path through a maze.
  1. 1.17 Karel Algorithms
  2. 5.2 Functions and Parameters 2
  3. 5.5 Functions and Return Values 2
AAP-2.M.3
Using existing correct algorithms as building blocks for constructing another algorithm has benefits such as reducing development time, reducing testing, and simplifying the identification of errors.
  1. 1.10 Super Karel
AAP-2.N.1
The exam reference sheet provides basic operations on lists include: accessing an element by index; aList[i] accesses the element of aList at index i. The first element of aList is at index 1 and accessed using the notation alist[1]; assigning a value of an element of a list to a variable; x ← aList [i] - assigns the value of aList[i] to the variable x; assigning a value to an element of a list; aList[i] ← x - assigns the value of x to aList[i]. aList[i] ← aList[j] - assigns the value of aList[j] to aList[i]. inserting elements at a given index; INSERT(aList, i, value) - any values in aList at indices greater than or equal to i are shifted one position to the right. The length of the list is increased by 1, and value is placed at index i in aList. adding elements to the end of the list (append); APPEND(aList, value) - the length of aList is increased by 1, and value is placed at the end of the aList. removing elements; and REMOVE(aList, i) - Removes the item at index i in aList and shifts to the left any values at indices greater than i. The length of aList is decreased by 1. determining the length of a list. LENGTH(aList) – Evaluates to the number of elements currently in aList.
  1. 7.1 Intro to Lists/Arrays
  2. 7.7 Removing an Element From an Array
AAP-2.N.2
List procedures are implemented in accordance with the syntax rules of the language.
  1. 7.1 Intro to Lists/Arrays
  2. 7.2 Indexing Into an Array
AAP-2.O.1
Traversing a list can be a complete traversal where all elements in the list are accessed, or a partial traversal where only a portion of elements are accessed. EXCLUSION STATEMENT (EK AAP-2.O.1): Traversing multiple lists at the same time using the same index for both, parallel traversals, is outside the scope of this course and the AP Exam.
  1. 7.5 Iterating Over an Array
  2. 7.7 Removing an Element From an Array
AAP-2.O.2
Iteration statements can be used to traverse a list.
  1. 7.5 Iterating Over an Array
  2. 7.7 Removing an Element From an Array
AAP-2.O.3
The exam reference sheet provides FOR EACH item IN aList { <block of statements> } The variable item is assigned the value of each element of aList sequentially, in order from the first element to the last element. The code in block of statements is executed once for each assignment of item.
  1. 7.7 Removing an Element From an Array
AAP-2.O.4
Knowledge of existing algorithms that use iteration can help in constructing new algorithms. Some examples of existing algorithms that are often used with lists include: determining a minimum or maximum value in a list; computing a sum or average of a list of numbers.
  1. 7.4 Array Length and Looping Through Arrays
AAP-2.O.5
Linear search or sequential search algorithms check each element of a list in order until the desired value is found or all elements in the list have been checked.
  1. 7.6 Finding an Element in a List
AAP-2.P.1
The binary search algorithm starts at the middle of a sorted data set of numbers and eliminates half of the data in each iteration until the desired value is found or all elements have been eliminated. EXCLUSION STATEMENT (EK: AAP-2.P.1): Specific implementations of the binary search are outside the scope of the course and the AP Exam.
  1. 7.6 Finding an Element in a List
AAP-2.P.2
Data must be in sorted order to use the binary search algorithm.
  1. 7.6 Finding an Element in a List
AAP-2.P.3
Binary search is often more efficient than sequential / linear search when the data is sorted.
  1. 7.6 Finding an Element in a List
AAP-3.A.1
A procedure is a named group of programming instructions that may have parameters and return values.
  1. 5.1 Functions and Parameters 1
AAP-3.A.2
Procedures are referred to by different names, such as method or function, depending on the programming language.
  1. 5.1 Functions and Parameters 1
AAP-3.A.3
Parameters are input variables of a procedure. Arguments specify the values of the parameters when a procedure is called.
  1. 5.1 Functions and Parameters 1
AAP-3.A.4
A procedure call interrupts the sequential execution of statements, causing the program to first execute the statements within the procedure before continuing. Once the last statement in the procedure has executed, or a return statement is executed, flow of control is returned to the point immediately following where the procedure was called.
  1. 5.1 Functions and Parameters 1
AAP-3.A.5
The exam reference sheet provides procName (arg1, arg2, …) as a way to call PROCEDURE procName(parameter1, parameter 2, …) which takes zero or more arguments and arg1 is assigned to parameter1 and arg2 is assigned to parameter2, … respectively.
  1. 7.7 Removing an Element From an Array
AAP-3.A.6
The exam reference sheet provides the procedure DISPLAY(expression) to display the value of expression, followed by a space.
  1. 3.5 User Input
  2. 7.7 Removing an Element From an Array
AAP-3.A.7
The exam reference sheet provides the RETURN(expression) statement, which is used to return the flow of control to the point where the procedure was called and to return the value of expression.
  1. 7.7 Removing an Element From an Array
AAP-3.A.8
The exam reference sheet provides result ß procName(arg1, arg2, …) to assign the “value of the procedure” being returned by calling PROCEDURE procName(parameter1, parameter2, …) to result.
  1. 7.7 Removing an Element From an Array
AAP-3.A.9
The exam reference sheet provides procedure INPUT(), which accepts a value from the user and returns the input value.
  1. 3.5 User Input
AAP-3.B.1
One common type of abstraction is procedural abstraction which provides a name for a process and allows a procedure to be used only knowing what it does, not how it does it.
  1. 1.9 Abstraction
AAP-3.B.2
Procedural abstraction allows a solution to a large problem to be based on the solution of smaller sub-problems. This is accomplished by creating procedures to solve each one of the sub-problems.
  1. 1.9 Abstraction
AAP-3.B.3
The process of subdividing a computer program into separate sub-programs is called modularity.
  1. 1.9 Abstraction
AAP-3.B.4
A procedural abstraction may extract shared features to generalize functionality instead of duplicating code. This allows for program code reuse, which helps to manage complexity.
  1. 1.9 Abstraction
AAP-3.B.5
Using parameters allows procedures to be generalized, enabling the procedures to be reused with a range of input values or arguments.
  1. 5.1 Functions and Parameters 1
AAP-3.B.6
Using procedural abstraction helps improve code readability.
  1. 1.9 Abstraction
AAP-3.B.7
Using procedural abstraction in a program allows programmers to change the internals of the procedure (to make it faster, more efficient, use less storage, etc.) without needing to notify users of the change as long as what the procedure does is preserved.
  1. 1.9 Abstraction
AAP-3.C.1
The exam reference sheet provides PROCEDURE procName(parameter1, parameter2, …) { <block of statements> } that is used to define a procedure that takes zero or more arguments. The procedure contains block of statements.
  1. 5.1 Functions and Parameters 1
  2. 7.7 Removing an Element From an Array
AAP-3.C.2
The exam reference sheet provides PROCEDURE procName(parameter1, parameter2, …) { <block of statements> RETURN(expression) } that is used to define a procedure that takes zero or more arguments. The procedure contains block of statements and returns the value of expression. The RETURN statement may appear at any point inside the procedure and causes an immediate return from the procedure back to the calling statement.
  1. 5.4 Functions and Return Values 1
  2. 7.7 Removing an Element From an Array
AAP-3.D.1
A software library contains procedures that may be used in creating new programs.
  1. 1.10 Super Karel
  2. 1.19 Ultra Karel
AAP-3.D.2
Existing code segments can come from internal or external sources, such as: libraries; and previously written code.
  1. 1.10 Super Karel
  2. 1.19 Ultra Karel
AAP-3.D.3
The use of libraries simplifies the task of creating complex programs.
  1. 1.10 Super Karel
  2. 1.19 Ultra Karel
AAP-3.D.4
Application program interfaces (APIs) are specifications for how the procedures in a library behave and can be used.
  1. 1.10 Super Karel
  2. 1.19 Ultra Karel
AAP-3.D.5
Documentation for an API/library is necessary in understanding the behavior(s) provided by the API/library and how to use them.
  1. 1.10 Super Karel
  2. 1.19 Ultra Karel
AAP-3.E.1
The exam reference sheet provides RANDOM(a, b) which generates and returns a random integer from a to b, including a and b. Each result is equally likely to occur. For example, RANDOM(1, 3) could return 1, 2, or 3.
  1. 7.7 Removing an Element From an Array
AAP-3.E.2
Using random number generation in a program means each execution could produce a different result.
  1. 4.9 Random Numbers
AAP-3.F.1
Simulations are abstractions of more complex objects or phenomena for a specific purpose.
  1. 7.8 Simulation
AAP-3.F.2
A simulation is a representation that uses varying sets of values to reflect the changing state of the phenomenon.
  1. 7.8 Simulation
AAP-3.F.3
Simulations often mimic real-world events with the purpose of drawing inferences allowing investigation of the phenomenon without the constraints of the real world.
  1. 7.8 Simulation
AAP-3.F.4
The process of developing an abstract simulation involves removing specific details or simplifying functionality.
  1. 7.8 Simulation
AAP-3.F.5
Simulations can contain bias derived from the choices of elements of the real-world that were included or excluded.
  1. 7.8 Simulation
AAP-3.F.6
Simulations are most useful when real-world events are impractical for experiments (i.e., too big, too small, too fast, too slow, too expensive or too dangerous).
  1. 7.8 Simulation
AAP-3.F.7
Simulations facilitate the formulation and refinement of hypotheses related to the objects or phenomena under consideration.
  1. 7.8 Simulation
AAP-3.F.8
Random number generators can be used to simulate the variability that exists in the real-world.
  1. 7.8 Simulation
AAP-4.A.1
A problem is a general description of a task that may (or may not) be solved algorithmically. An instance of a problem also includes specific input. For example, sorting is a problem, sorting the list (2,3,1,7) is an instance of the problem.
  1. 7.6 Finding an Element in a List
AAP-4.A.2
A decision problem is a problem with a yes-no answer. An optimization problem is a problem with the goal of finding the "best" solution among many. For example, is there a path from A to B? What is the shortest path from A to B?
  1. 1.17 Karel Algorithms
AAP-4.A.3
Efficiency measures the number of steps an algorithm requires before it terminates. Efficiency is a function of the size of the input. EXCLUSION STATEMENT (EK AAP-4.A.3): Formal analysis of algorithms (Big-O) and formal reasoning using mathematical formulas are outside the scope of this course and the AP Exam.
  1. 7.6 Finding an Element in a List
AAP-4.A.4
Determining an algorithm’s efficiency is done by reasoning formally or mathematically about the algorithm.
  1. 1.17 Karel Algorithms
AAP-4.A.5
An algorithm's efficiency can be informally measured by determining the number of times a statement or group of statements executes.
  1. 1.17 Karel Algorithms
AAP-4.A.6
Different correct algorithms for the same problem can have different efficiencies.
  1. 1.17 Karel Algorithms
AAP-4.A.7
Algorithms with efficiencies that grow at a polynomial rate or slower (constant, linear, square, cube, etc.) are said to run in a reasonable amount of time. Algorithms with efficiencies that grow at an exponential or factorial rate are example of algorithms that run in an unreasonable time.
  1. 7.6 Finding an Element in a List
AAP-4.A.8
Some problems cannot be solved in a reasonable amount of time because there is no efficient algorithm for solving them. In these cases, approximate solutions are sought.
  1. 7.6 Finding an Element in a List
AAP-4.A.9
A heuristic is an approach to a problem that produces a solution that is not guaranteed to be optimal, but that may be used when techniques that are guaranteed to always find an optimal solution are impractical. EXCLUSION STATEMENT (AAP-4.A.9): Specific heuristic solutions are outside the scope of this course and the AP Exam.
  1. 7.6 Finding an Element in a List
AAP-4.B.1
A decidable problem is a decision problem for which an algorithm can be written to produce a correct output for all inputs (e.g., “Is the number even?”).
  1. 8.10 Cryptography
AAP-4.B.2
An undecidable problem is one in which no algorithm can be constructed that is always capable of providing a correct yes-or-no answer. EXCLUSION STATEMENT (EK AAP-4.B.2): Determining whether a given problem is undecidable is outside the scope of this course and the AP Exam.
  1. 8.10 Cryptography
AAP-4.B.3
An undecidable problem may have some instances that have an algorithmic solution, but there is no algorithmic solution that solves all instances of the problem.
  1. 8.10 Cryptography
CSN-1.A.1
A computing device is a physical artifact that can run a program. Some examples include computers, tablets, servers, routers, and smart sensors.
  1. 11.2 Internet Hardware
CSN-1.A.2
A computing system is a group of computing devices and programs working together for a common purpose.
  1. 11.2 Internet Hardware
CSN-1.A.3
A computer network is a group of interconnected computing devices capable of sending or receiving data.
  1. 11.2 Internet Hardware
CSN-1.A.4
A computer network is a type of a computing system.
  1. 11.2 Internet Hardware
CSN-1.A.5
A path between two computing devices on a computer network (a sender or a receiver) is a sequence of directly-connected computing devices beginning at the sender and ending at the receiver.
  1. 11.5 DNS
  2. 11.6 Routing
  3. 11.7 Packets and Protocols
CSN-1.A.6
Routing is the process of finding a path from sender to receiver.
  1. 11.5 DNS
  2. 11.6 Routing
  3. 11.7 Packets and Protocols
CSN-1.A.7
The bandwidth of a computer network is the maximum amount of data that can be sent in a fixed amount of time.
  1. 11.2 Internet Hardware
CSN-1.A.8
Bandwidth is usually measured in bits per second.
  1. 11.2 Internet Hardware
CSN-1.B.1
The Internet is a computer network consisting of interconnected networks that use standardized, open or non-proprietary, communication protocols.
  1. 11.7 Packets and Protocols
CSN-1.B.2
Access to the Internet depends on the ability to connect a computing device to a part of the Internet.
  1. 11.7 Packets and Protocols
CSN-1.B.3
A protocol is an agreed-upon set of rules that specify the behavior of some system.
  1. 11.1 Welcome to the Internet
CSN-1.B.4
The protocols used in the Internet are open which allows users to easily connect additional computing devices to the Internet.
  1. 11.3 Internet Addresses
CSN-1.B.5
Routing on the Internet is usually dynamic; it is not specified in advance.
  1. 11.5 DNS
  2. 11.6 Routing
CSN-1.B.6
Scalability of a system is the capacity for the system to change in size and scale to meet new demands.
  1. 11.5 DNS
  2. 11.6 Routing
CSN-1.B.7
The Internet was designed to be scalable.
  1. 11.5 DNS
  2. 11.6 Routing
CSN-1.C.1
Information is passed through the Internet as a datastream. Datastreams contains chunks of data which are encapsulated in packets.
  1. 11.7 Packets and Protocols
CSN-1.C.2
Packets contain a chunk of data and metadata used for routing a packet between the origin and the destination on the Internet and data reassembly.
  1. 11.7 Packets and Protocols
CSN-1.C.3
Packets may arrive at the destination in order, out-of-order, or not at all.
  1. 11.7 Packets and Protocols
CSN-1.C.4
IP, TCP, and UDP are common protocols used on the Internet.
  1. 11.7 Packets and Protocols
CSN-1.D.1
The world wide web is a system of linked pages, programs, and files.
  1. 11.7 Packets and Protocols
CSN-1.D.2
The HTTP protocol is the used on the World Wide Web.
  1. 11.7 Packets and Protocols
CSN-1.D.3
The World Wide Web uses the Internet.
  1. 11.7 Packets and Protocols
CSN-1.E.1
The Internet has been engineered to be fault-tolerant, with abstractions for routing and transmitting data.
  1. 11.5 DNS
  2. 11.6 Routing
CSN-1.E.2
Redundancy is the inclusion of extra components that can be used to mitigate failure of the system if other components fail.
  1. 11.5 DNS
  2. 11.6 Routing
CSN-1.E.3
One way redundancy is accomplished in networks is by having more than one path between two devices.
  1. 11.5 DNS
  2. 11.6 Routing
CSN-1.E.4
If a particular device or connection on the Internet fails, subsequent data will be sent via a different route, if possible.
  1. 11.5 DNS
  2. 11.6 Routing
CSN-1.E.5
When a system can support failures and still continue to function, it is called “fault-tolerant”; this is important because elements of complex systems fail at unexpected times, often in bunches, and fault-tolerance allows users to continue to use the network.
  1. 11.5 DNS
  2. 11.6 Routing
CSN-1.E.6
Redundancy within a system often requires additional resources but can provide the benefit of fault-tolerance.
  1. 11.5 DNS
  2. 11.6 Routing
CSN-1.E.7
The redundancy of routing between two points on the Internet increases the reliability of the Internet and helps it scale to more devices and more people.
  1. 11.5 DNS
  2. 11.6 Routing
CSN-2.A.1
Sequential computing is a computational model in which operations are performed in order one at a time.
  1. 11.8 Sequential, Parallel & Distributed Computing
CSN-2.A.2
Parallel computing is a computational model where the program is broken into multiple smaller sequential computing operations some of which are performed simultaneously.
  1. 11.8 Sequential, Parallel & Distributed Computing
CSN-2.A.3
Distributed computing is a computational model in which multiple devices are used to run a program.
  1. 11.8 Sequential, Parallel & Distributed Computing
CSN-2.A.4
Comparing efficiency of solutions can be done by comparing the time it takes them to perform the same task
  1. 11.8 Sequential, Parallel & Distributed Computing
CSN-2.A.5
A sequential solution takes as long as the sum of all of its steps.
  1. 11.8 Sequential, Parallel & Distributed Computing
CSN-2.A.6
A parallel computing solution takes as long as its sequential tasks plus the longest of the tasks done in parallel.
  1. 11.8 Sequential, Parallel & Distributed Computing
CSN-2.A.7
The “speedup” of a parallel solution is measured in the time it took to complete the task sequentially divided by the time it took to complete the task when done in parallel.
  1. 11.8 Sequential, Parallel & Distributed Computing
CSN-2.B.1
Parallel computing consists of a parallel portion and a sequential portion.
  1. 11.8 Sequential, Parallel & Distributed Computing
CSN-2.B.2
Solutions that use parallel computing can scale more effectively than solutions that use sequential computing.
  1. 11.8 Sequential, Parallel & Distributed Computing
CSN-2.B.3
Distributed computing allows problems to be solved that could not be solved on a single computer, either because of the processing time or storage needs involved.
  1. 11.8 Sequential, Parallel & Distributed Computing
CSN-2.B.4
Distributed computing allows much larger problems to be solved quicker than they could be solved using a single computer.
  1. 11.8 Sequential, Parallel & Distributed Computing
CSN-2.B.5
When increasing the use of parallel computing in a solution, the efficiency of the solution is still limited by the sequential portion. This means at some point, adding parallel portions will no longer increase efficiency.
  1. 11.8 Sequential, Parallel & Distributed Computing
IOC-1.A.1
People are creators of computing innovations.
  1. 11.10 The Impact of the Internet
IOC-1.A.2
As computing evolves, the way people complete tasks often changes to incorporate new computing innovations.
  1. 18.1 Intro to Design Thinking
IOC-1.A.3
The total effects of a computing innovation are not always anticipated in advance.
  1. 11.10 The Impact of the Internet
IOC-1.A.4
A single effect can be viewed as both beneficial and harmful based on an individual’s perspectives.
  1. 11.10 The Impact of the Internet
IOC-1.A.5
Advances in computing have generated and increased creativity in other fields, such as medicine, engineering, communications and the arts.
  1. 11.10 The Impact of the Internet
IOC-1.B.1
Computing innovations can be used in ways that the creator had not originally intended. Some examples include: The World Wide Web was originally intended only for rapid and easy exchange of information within the scientific community; Targeted advertising is used to help individuals, but it can be misused at both individual and aggregate levels; Machine learning and data mining have enabled innovation in medicine, business, and science, but information discovered in this way could also be used to discriminate against groups of individuals.
  1. 11.10 The Impact of the Internet
IOC-1.B.2
Some of the unintended ways computing innovations can be used may have a harmful impact on society, economy, or culture.
  1. 11.10 The Impact of the Internet
IOC-1.B.3
Responsible programmers try to consider the unintended ways their computing innovations can be used and the potential beneficial and harmful effects of these new uses.
  1. 11.10 The Impact of the Internet
IOC-1.B.4
It is not possible for a programmer to consider all the ways a computing innovation can be used.
  1. 11.10 The Impact of the Internet
IOC-1.B.5
Often computing innovations have had a beneficial effect by leading to advances in other fields.
  1. 11.10 The Impact of the Internet
IOC-1.B.6
Rapid sharing of the program or the results of running a program with a large number of users can result in significant impacts beyond the intended purpose or control of the programmer.
  1. 11.10 The Impact of the Internet
IOC-1.C.1
Internet access varies between socioeconomic, geographic, or demographic characteristics and between countries.
  1. 11.10 The Impact of the Internet
IOC-1.C.2
The digital divide refers to differing access to computing devices and the Internet based on socioeconomic, geographic, or demographic characteristics.
  1. 11.10 The Impact of the Internet
IOC-1.C.3
The digital divide can affect both groups and individuals.
  1. 11.10 The Impact of the Internet
IOC-1.C.4
The digital divide raises issues of equity, access, and influence, both globally and locally.
  1. 11.10 The Impact of the Internet
IOC-1.C.5
The digital divide is affected by individuals, organizations and government actions.
  1. 11.10 The Impact of the Internet
IOC-1.D.1
Computing innovations can reflect existing human biases because of biases written into the algorithms or biases in the data used by the innovation.
  1. 18.3 Test
IOC-1.D.2
Programmers should take action to reduce bias in algorithms used for computing innovations as a way of combating existing human biases.
  1. 18.3 Test
IOC-1.D.3
Biases can be embedded at all levels of software development.
  1. 18.3 Test
IOC-1.E.1
Widespread access to information and public data facilitates the identification of problems, development of solutions, and dissemination of results.
  1. 11.10 The Impact of the Internet
IOC-1.E.2
Science has been impacted by using scale and “citizen science” to solve scientific problems.
  1. 11.10 The Impact of the Internet
IOC-1.E.3
Citizen science is scientific research conducted in whole or part by individuals that contribute relevant data to research using their own computing devices.
  1. 11.10 The Impact of the Internet
IOC-1.E.4
Crowdsourcing is the practice of obtaining input or information from a large number of people via the Internet.
  1. 11.10 The Impact of the Internet
IOC-1.E.5
Human capabilities can be enhanced by collaboration via computing.
  1. 11.10 The Impact of the Internet
IOC-1.E.6
Crowdsourcing offers new models for collaboration, such as connecting people with jobs and businesses or social causes with funding.
  1. 11.10 The Impact of the Internet
IOC-1.F.1
Material created on a computer is the intellectual property of the creator or an organization.
  1. 11.10 The Impact of the Internet
IOC-1.F.2
Ease of access and distribution of digitized information raises intellectual property concerns regarding ownership, value, and use.
  1. 11.10 The Impact of the Internet
IOC-1.F.3
Measures should be taken to safeguard intellectual property.
  1. 11.11 Creative Credit & Copyright
IOC-1.F.4
The use of material created by someone else without permission is plagiarism and may have legal consequences.
  1. 11.10 The Impact of the Internet
  2. 11.11 Creative Credit & Copyright
IOC-1.F.5
Some examples of legal ways to use materials created by someone else include: Creative Commons - a public copyright license that enables the free distribution of an otherwise copyrighted work. This is used when the content creator wants to give others the right to share, use, and build upon the work they have created; open source – programs that are made freely available and may be redistributed and modified; open access - online research outputs that are free of any and all restrictions on access, and free of many restrictions on use such as copyright or license restrictions.
  1. 11.10 The Impact of the Internet
  2. 11.11 Creative Credit & Copyright
IOC-1.F.6
The use of material created by someone other than yourself should always be cited.
  1. 11.11 Creative Credit & Copyright
IOC-1.F.7
Creative commons, open source, and open access have enabled broad access to digital information.
  1. 11.10 The Impact of the Internet
IOC-1.F.8
Using computing to harm individuals or groups of people raise legal and ethical concerns.
  1. 11.9 Cybersecurity
IOC-1.F.9
Computing can play a role in social and political issues which in turn often raise legal and ethical concerns.
  1. 11.10 The Impact of the Internet
IOC-1.F.10
The digital divide raises ethical concerns around computing.
  1. 11.10 The Impact of the Internet
IOC-1.F.11
Computing innovations can raise legal and ethical concerns. Some examples of these include: the development of software that allows access to digital media downloads and streaming; the development of algorithms that include bias; and the existence of computing devices that collect and analyze data by continuously monitoring activities.
  1. 11.11 Creative Credit & Copyright
  2. 15.1 The Impacts of Computing
  3. 18.3 Test
IOC-2.A.1
Personally identifiable information (PII) is information about an individual that identifies, links, relates, is unique to, or describes them. Examples of PII include: social security number; age; race; phone number(s); medical information; financial information; and biometric data.
  1. 11.9 Cybersecurity
IOC-2.A.2
Search engines can record and maintain a history of searches made by users.
  1. 15.1 The Impacts of Computing
IOC-2.A.3
Websites can record and maintain a history of individuals who have viewed their pages.
  1. 15.1 The Impacts of Computing
IOC-2.A.4
Devices, websites, and networks can collect information about a user’s location.
  1. 15.1 The Impacts of Computing
IOC-2.A.5
Technology enables the collection, use, and exploitation of information about, by, and for individuals, groups, and institutions.
  1. 15.1 The Impacts of Computing
IOC-2.A.6
Search engines can use search history to suggest websites or for target marketing.
  1. 15.1 The Impacts of Computing
IOC-2.A.7
Disparate personal data, such as geolocation, cookies, and browsing history, can be aggregated to create knowledge about an individual.
  1. 11.9 Cybersecurity
IOC-2.A.8
PII and other information placed online can be used to enhance a user’s online experiences.
  1. 11.9 Cybersecurity
IOC-2.A.9
PII stored online can be used to simplify making online purchases.
  1. 11.9 Cybersecurity
IOC-2.A.10
Commercial and governmental curation of information may be exploited if privacy and other protections are ignored.
  1. 15.1 The Impacts of Computing
IOC-2.A.11
Information placed online can be used in ways that were not intended and in ways that may have a harmful impact. For example, an email message may be forwarded, tweets can be retweeted, social media posts can be viewed by potential employers.
  1. 11.9 Cybersecurity
IOC-2.A.12
PII can be used to stalk or steal the identity of a person, or to aid in the planning of criminal acts.
  1. 11.9 Cybersecurity
IOC-2.A.13
It is difficult to delete information once it has been placed online.
  1. 11.9 Cybersecurity
IOC-2.A.14
Applications can collect your location and record where you have been, how you got there, and how long you have been at a given location.
  1. 15.1 The Impacts of Computing
IOC-2.A.15
Information posted to social media services can be used by others. Combining information posted on social media and other sources can be used to deduce private information about you.
  1. 11.9 Cybersecurity
IOC-2.B.1
Authentication measures protect devices and information from unauthorized access. Examples of authentication measures include: Strong passwords; and Multi-factor authentication.
  1. 11.9 Cybersecurity
IOC-2.B.2
A strong password is something that is easy for a user to remember but would be difficult for someone else to guess based on knowledge of that user.
  1. 11.9 Cybersecurity
IOC-2.B.3
Multi-factor authentication is a method of computer access control in which a user is only granted access after successfully presenting several separate pieces of evidence to an authentication mechanism--typically at least two of the following categories: knowledge (something they know); possession (something they have), and inherence (something they are).
  1. 11.9 Cybersecurity
IOC-2.B.4
Multi-factor authentication requires at least two steps to unlock protected information; each step adds a new layer of security that must be broken to gain unauthorized access.
  1. 11.9 Cybersecurity
IOC-2.B.5
Encryption is the process of encoding data to prevent unauthorized access to information. Decryption is the process of decoding the data. Two common encryption approaches are: Symmetric key encryption – a method of encryption involving one key for encryption and decryption; and Public key encryption – a method of encryption that pairs a public key for encryption and a private key for decryption. The sender does not need the receiver’s private key to encrypt a message, but the receiver’s private key is required to decrypt the message. Exclusion Statement (EK IOC-2.B.5): Specific mathematical procedures for encryption and decryption are beyond the scope of this course.
  1. 8.10 Cryptography
  2. 11.9 Cybersecurity
IOC-2.B.6
Certificate authorities (CAs) issue digital certificates that validate the ownership of encryption keys used in secured communications and are based on a trust model.
  1. 11.9 Cybersecurity
IOC-2.B.7
Computer virus and malware scanning software can help to protect a computing system against infection.
  1. 11.9 Cybersecurity
IOC-2.B.8
A computer virus is a malicious program that can copy itself and gain access to a computer in an unauthorized way. Computer viruses often attach themselves to legitimate programs, and start running independently on a computer.
  1. 8.10 Cryptography
IOC-2.B.9
Malware is software intended to damage a computing system or to take partial control over its operation.
  1. 11.9 Cybersecurity
IOC-2.B.10
All real-world systems have errors or design flaws that can be exploited to compromise them. Regular software updates help to fix errors that comprise a computing system.
  1. 11.9 Cybersecurity
IOC-2.B.11
Users can control the permissions applications have for collecting user information. Users should review the permissions of applications to protect their privacy.
  1. 11.9 Cybersecurity
IOC-2.C.1
Phishing is a technique that is used to trick a user into providing personal information. That personal information can then be used to access sensitive online resources, such as bank accounts and emails.
  1. 11.9 Cybersecurity
IOC-2.C.2
Keylogging is the use of a program to record every keystroke made by a computer user, in order to gain fraudulent access to passwords and other confidential information.
  1. 11.9 Cybersecurity
IOC-2.C.3
Data sent over public networks can be intercepted, analyzed and modified. One way that this can happen is through a rogue access point.
  1. 11.9 Cybersecurity
IOC-2.C.4
A rogue access point is a wireless access point that gives unauthorized access to secure networks.
  1. 11.9 Cybersecurity
IOC-2.C.5
A malicious link can be disguised on a web page or in an email message.
  1. 11.9 Cybersecurity
IOC-2.C.6
Unsolicited emails, attachments, links, and forms in emails can be used to compromise the security of a computing system. These can come from unknown senders or from known senders whose security has been compromised.
  1. 11.9 Cybersecurity
IOC-2.C.7
Untrustworthy (often free) downloads from freeware or shareware sites can contain malware.
  1. 11.9 Cybersecurity