AP Computer Science Principles
Big Idea 1: Creative Development (10–13% AP Exam Weighting)
- Collaboration is crucial for developing computing innovations, improving design through diverse perspectives.
- An iterative development process is used when working collaboratively to design and develop programs.
- Gather input form people from different backgrounds and demographics to identify the needs of all users.
- Effective collaboration requires equal participation and voice from all group members.
- Pair with Big Idea 3: Algorithms and Programming.
- Programmers consider user interface when designing solutions.
- A well-designed user interface makes it easy for the user to understand what data are required as input for the program.
- Use documentation to explain the purpose of various code segments and describe how they function together in the program.
- Students will be expected to design and implement a program of their choice for the Create performance task.
- Students are required to include certain elements, such as lists and procedures, in their program code.
Topic 1.1 Collaboration
- Enduring Understanding (CRD-1): Incorporating multiple perspectives through collaboration improves computing innovations as they are developed.
- Learning Objective (CRD-1.A): Explain how computing innovations are improved through collaboration.
- A computing innovation includes a program as an integral part of its function.
- Computing innovations can be physical (e.g., self-driving car), nonphysical computing software (e.g., picture editing software), or a nonphysical computing concept (e.g., e-commerce).
- Effective collaboration produces a computing innovation that reflects the diversity of talents and perspectives of those who designed it.
- Collaboration that includes diverse perspectives helps avoid bias in the development of computing innovations.
- Consultation and communication with users are important aspects of the development of computing innovations.
- Learning Objective (CRD-1.B): Explain how computing innovations are developed by groups of people.
- Online tools support collaboration by allowing programmers to share and provide feedback on ideas and documents.
- Common models such as pair programming exist to facilitate collaboration.
Topic 1.2 Program Function and Purpose
- Enduring Understanding (CRD-2): Developers create and innovate using an iterative design process that is user-focused, that incorporates implementation/feedback cycles, and that leaves ample room for experimentation and risk-taking.
- Learning Objective (CRD-2.A): Describe the purpose of a computing innovation.
- The purpose of computing innovations is to solve problems or to pursue interests through creative expression.
- Learning Objective (CRD-2.B): Explain how a program or code segment functions.
- 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.
- A code segment is a collection of program statements that is part of a program.
- The behavior of a program is how a program functions during execution and is often described by how a user interacts with it.
- Learning Objective (CRD-2.C): Identify input(s) to a program.
- Program inputs are data sent to a computer for processing by a program. Input can come in a variety of forms, such as tactile, audio, visual, or text.
- An event is associated with an action and supplies input data to a program.
- Learning Objective (CRD-2.D): Identify output(s) produced by a program.
- Program outputs are any data sent from a program to a device. Program output can come in a variety of forms, such as tactile, audio, visual, or text.
- Program output is usually based on a program’s input or prior state (e.g., internal values).
Topic 1.3 Program Design and Development
- Enduring Understanding (CRD-2): Developers create and innovate using an iterative design process that is user-focused, that incorporates implementation/feedback cycles, and that leaves ample room for experimentation and risk-taking.
- Learning Objective (CRD-2.E): Develop a program using a development process.
- A development process can be ordered and intentional, or exploratory in nature.
- The following phases are commonly used when developing a program: investigating and reflecting, designing, prototyping, testing.
- A development process that is iterative requires refinement and revision based on feedback, testing, or reflection.
- Learning Objective (CRD-2.F): Design a program and its user interface.
- The design of a program incorporates investigation to determine its requirements.
- Program requirements describe how a program functions and may include a description of user interactions that a program must provide.
- Learning Objective (CRD-2.G): Describe the purpose of a code segment or program by writing documentation.
- Program documentation is a written description of the function of a code segment, event, procedure, or program and how it was developed.
- Comments are a form of program documentation written into the program to be read by people and do not affect how a program runs.
- Learning Objective (CRD-2.H): Acknowledge code segments used from other sources.
- It is important to acknowledge any code segments that were developed collaboratively or by another source.
- Acknowledgement of a code segment(s) written by someone else and used in a program can be in the program documentation.
Topic 1.4 Identifying and Correcting Errors
- Enduring Understanding (CRD-2): Developers create and innovate using an iterative design process that is user-focused, that incorporates implementation/feedback cycles, and that leaves ample room for experimentation and risk-taking.
- Learning Objective (CRD-2.I): For errors in an algorithm or program: a. Identify the error. b. Correct the error.
- A logic error is a mistake in the algorithm or program that causes it to behave incorrectly or unexpectedly.
- A syntax error is a mistake in the program where the rules of the programming language are not followed.
- A run-time error is a mistake in the program that occurs during the execution of a program.
- Learning Objective (CRD-2.J): Identify inputs and corresponding expected outputs or behaviors that can be used to check the correctness of an algorithm or program.
- In the development process, testing uses defined inputs to ensure that an algorithm or program is producing the expected outcomes.
- 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.
Big Idea 2: Data (17–22% AP Exam Weighting)
- Students will learn how data are processed to learn something new.
- Connecting the foundational principles of how number systems operate to the decimal number system is likely to help students.
- Data compression algorithms are often used to maximize storage space or to transmit data over the Internet, but sometimes at a cost to the quality of the data.
Topic 2.1 Binary Numbers
- Enduring Understanding (DAT-1): The way a computer represents data internally is different from the way the data are interpreted and displayed for the user. Programs are used to translate data into a representation more easily understood by people.
- Learning Objective (DAT-1.A): Explain how data can be represented using bits.
- Data values can be stored in variables, lists of items, or standalone constants and can be passed as input to (or output from) procedures.
- Bits are grouped to represent abstractions (numbers, characters, and color).
- Analog data have values that change smoothly.
- Learning Objective (DAT-1.B): Explain the consequences of using bits to represent data.
- Fixed number of bits to represent integers limits the range of integer values and mathematical operations (may result in overflow or other errors).
- Fixed number of bits used to represent real numbers limits the range and mathematical operations on these values (may result in round-off and other errors).
- Learning Objective (DAT-1.C): For binary numbers: a. Calculate the binary (base 2) equivalent of a positive integer (base 10) and vice versa. b. Compare and order binary numbers.
- Number bases, including binary and decimal, are used to represent data.
- Digit’s position in the binary sequence determines its numeric value.
- numeric
ewline value = (bit's
ewline value) * (place
ewline value
ewline of
ewline its
ewline position)
Topic 2.2 Data Compression
- Enduring Understanding (DAT-1): The way a computer represents data internally is different from the way the data are interpreted and displayed for the user. Programs are used to translate data into a representation more easily understood by people.
- Learning Objective (DAT-1.D): Compare data compression algorithms to determine which is best in a particular context.
- Data compression can reduce the size (number of bits) of transmitted or stored data.
- Lossless data compression algorithms can reduce the number of bits stored or transmitted while guaranteeing complete reconstruction of the original data.
- Lossy data compression algorithms can significantly reduce the number of bits stored or transmitted but only allow reconstruction of an approximation of the original data.
- Choose lossless when quality is important; choose lossy when minimizing data size is important.
- Enduring Understanding (DAT-2): Programs can be used to process data, which allows users to discover information and create new knowledge.
- Learning Objective (DAT-2.A): Describe what information can be extracted from data.
- Information is the collection of facts and patterns extracted from data.
- Data may show correlation between variables but correlation does not equal causation.
- Learning Objective (DAT-2.B): Describe what information can be extracted from metadata.
- Metadata are data about data.
- Metadata are used for finding, organizing, and managing information.
- Learning Objective (DAT-2.C): Identify the challenges associated with processing data.
- The ability to process data depends on the capabilities of the users and their tools.
- Data sets pose challenges regardless of size: the need to clean data, incomplete data, invalid data, the need to combine data sources.
- Cleaning data is a process that makes the data uniform without changing their meaning.
Topic 2.4 Using Programs with Data
- Enduring Understanding (DAT-2): Programs can be used to process data, which allows users to discover information and create new knowledge.
- Learning Objective (DAT-2.D): Extract information from data using a program.
- Programs can be used to process data to acquire information.
- Some processes that can be used to extract or modify information from data include the following: transforming every element of a data set, filtering a data set, combining or comparing data in some way.
- Learning Objective (DAT-2.E): Explain how programs can be used to gain insight and knowledge from data.
- Programs are used in an iterative and interactive way when processing information to allow users to gain insight and knowledge about data.
Big Idea 3: Algorithms and Programming (30–35% AP Exam Weighting)
- Having a basic understanding of how these building blocks are combined to form algorithms and abstractions in one language makes it easier to apply these same understandings to other programming languages.
- This big idea focuses on determining the efficiency of algorithms, as well as writing and implementing algorithms in a program.
- It is important for students to understand that not all problems can or should be solved using a program.
- When students explain how their abstractions manage complexity, they should use the context of their specific program to support why the abstraction is necessary or helpful.
Topic 3.1 Variables and Assignments
- Enduring Understanding (AAP-1): To find specific solutions to generalizable problems, programmers represent and organize data in multiple ways.
- Learning Objective (AAP-1.A): Represent a value with a variable.
- A variable is an abstraction inside a program that can hold a value.
- Using meaningful variable names helps with the readability of program code.
- Some programming languages provide types to represent data, which are referenced using variables. These types include numbers, Booleans, lists, and strings.
- Learning Objective (AAP-1.B): Determine the value of a variable as a result of an assignment.
- The assignment operator allows a program to change the value represented by a variable.
- The value stored in a variable will be the most recent value assigned.
Topic 3.2 Data Abstraction
- Enduring Understanding (AAP-1): To find specific solutions to generalizable problems, programmers represent and organize data in multiple ways.
- Learning Objective (AAP-1.C): Represent a list or string using a variable.
- A list is an ordered sequence of elements.
- An element is an individual value in a list that is assigned a unique index.
- A string is an ordered sequence of characters.
- Learning Objective (AAP-1.D): For data abstraction: a. Develop data abstraction using lists to store multiple elements. b. Explain how the use of data abstraction manages complexity in program code.
- Data abstraction provides a separation between the abstract properties of a data type and the concrete details of its representation.
- Data abstractions manage complexity in programs by giving a collection of data a name without referencing the specific details of the representation.
- Data abstractions can be created using lists.
Topic 3.3 Mathematical Expressions
- Enduring Understanding (AAP-2): The way statements are sequenced and combined in a program determines the computed result. Programs incorporate iteration and selection constructs to represent repetition and make decisions to handle varied input values.
- Learning Objective (AAP-2.A): Express an algorithm that uses sequencing without using a programming language.
- An algorithm is a finite set of instructions that accomplish a specific task.
- Beyond visual and textual programming languages, algorithms can be expressed in a variety of ways, such as natural language, diagrams, and pseudocode.
- Learning Objective (AAP-2.B): Represent a step-by-step algorithmic process using sequential code statements.
- Sequencing is the application of each step of an algorithm in the order in which the code statements are given.
- A code statement is a part of program code that expresses an action to be carried out.
- Learning Objective (AAP-2.C): Evaluate expressions that use arithmetic operators.
- Arithmetic operators are part of most programming languages and include addition, subtraction, multiplication, division, and modulus operators.
- The order of operations used in mathematics applies when evaluating expressions.
Topic 3.4 Strings
- Enduring Understanding (AAP-2): The way statements are sequenced and combined in a program determines the computed result. Programs incorporate iteration and selection constructs to represent repetition and make decisions to handle varied input values.
- Learning Objective (AAP-2.D): Evaluate expressions that manipulate strings.
- String concatenation joins together two or more strings end-to-end to make a new string.
- A substring is part of an existing string.
Topic 3.5 Boolean Expressions
- Enduring Understanding (AAP-2): The way statements are sequenced and combined in a program determines the computed result. Programs incorporate iteration and selection constructs to represent repetition and make decisions to handle varied input values.
- Learning Objective (AAP-2.E): For relationships between two variables, expressions, or values: a. Write expressions using relational operators. b. Evaluate expressions that use relational operators.
- A Boolean value is either true or false.
- Learning Objective (AAP-2.F): For relationships between Boolean values: a. Write expressions using logical operators. b. Evaluate expressions that use logic operators.
- The AND operator evaluates to true if both conditions are true; otherwise it evaluates to false. The operand for a logical operator is either a Boolean expression or a single Boolean value.
Topic 3.6 Conditionals
- Enduring Understanding (AAP-2): The way statements are sequenced and combined in a program determines the computed result. Programs incorporate iteration and selection constructs to represent repetition and make decisions to handle varied input values.
- Learning Objective (AAP-2.G): Express an algorithm that uses selection without using a programming language.
- Selection determines which parts of an algorithm are executed based on a condition being true or false.
- Learning Objective (AAP-2.H): For selection: a. Write conditional statements. b. Determine the result of conditional statements.
- Conditional statements, or “if-statements,” affect the sequential flow of control by executing different statements based on the value of a Boolean expression.
Topic 3.7 Nested Conditionals
- Enduring Understanding (AAP-2): The way statements are sequenced and combined in a program determines the computed result. Programs incorporate iteration and selection constructs to represent repetition and make decisions to handle varied input values.
- Learning Objective (AAP-2.I): For nested selection: a. Write nested conditional statements. b. Determine the result of nested conditional statements.
- Nested conditional statements consist of conditional statements within conditional statements.
Topic 3.8 Iteration
- Enduring Understanding (AAP-2): The way statements are sequenced and combined in a program determines the computed result. Programs incorporate iteration and selection constructs to represent repetition and make decisions to handle varied input values.
- Learning Objective (AAP-2.J): Express an algorithm that uses iteration without using a programming language.
- Iteration is a repeating portion of an algorithm. Iteration repeats a specified number of times or until a given condition is met.
- Learning Objective (AAP-2.K): For iteration: a. Write iteration statements. b. Determine the result or side effect of iteration statements.
- Iteration statements change the sequential flow of control by repeating a set of statements zero or more times, until a stopping condition is met.
Topic 3.9 Developing Algorithms
- Enduring Understanding (AAP-2): The way statements are sequenced and combined in a program determines the computed result. Programs incorporate iteration and selection constructs to represent repetition and make decisions to handle varied input values.
- Learning Objective (AAP-2.L): Compare multiple algorithms to determine if they yield the same side effect or result.
- Algorithms can be written in different ways and still accomplish the same tasks.
- Learning Objective (AAP-2.M): For algorithms: a. Create algorithms. b. Combine and modify existing algorithms.
- Algorithms can be created from an idea, by combining existing algorithms, or by modifying existing algorithms.
Topic 3.10 Lists
- Enduring Understanding (AAP-2): The way statements are sequenced and combined in a program determines the computed result. Programs incorporate iteration and selection constructs to represent repetition and make decisions to handle varied input values.
- Learning Objective (AAP-2.N): For list operations: a. Write expressions that use list indexing and list procedures. b. Evaluate expressions that use list indexing and list procedures.
- Learning Objective (AAP-2.O): For algorithms involving elements of a list: a. Write iteration statements to traverse a list. b. Determine the result of an algorithm that includes list traversals.
Topic 3.11 Binary Search
- Enduring Understanding (AAP-2): The way statements are sequenced and combined in a program determines the computed result. Programs incorporate iteration and selection constructs to represent repetition and make decisions to handle varied input values.
- Learning Objective (AAP-2.P): For binary search algorithms: a. Determine the number of iterations required to find a value in a data set. b. Explain the requirements necessary to complete a binary search.
- The binary search algorithm starts at the middle of a sorted data set of numbers and eliminates half of the data; this process repeats until the desired value is found or all elements have been eliminated.
- Data must be in sorted order to use the binary search algorithm.
Topic 3.12 Calling Procedures
- Enduring Understanding (AAP-3): Programmers break down problems into smaller and more manageable pieces. By creating procedures and leveraging parameters, programmers generalize processes that can be reused. Procedures allow programmers to draw upon existing code that has already been tested, allowing them to write programs more quickly and with more confidence.
- Learning Objective (AAP-3.A): For procedure calls: a. Write statements to call procedures. b. Determine the result or effect of a procedure call.
- A procedure is a named group of programming instructions that may have parameters and return values.
- A procedure call interrupts the sequential execution of statements, causing the program to execute the statements within the procedure before continuing.
Topic 3.13 Developing Procedures
- Enduring Understanding (AAP-3): Programmers break down problems into smaller and more manageable pieces. By creating procedures and leveraging parameters, programmers generalize processes that can be reused. Procedures allow programmers to draw upon existing code that has already been tested, allowing them to write programs more quickly and with more confidence.
- Learning Objective (AAP-3.B): Explain how the use of procedural abstraction manages complexity in a program.
- 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.
- Using parameters allows procedures to be generalized, enabling the procedures to be reused with a range of input values or arguments.
- Learning Objective (AAP-3.C): Develop procedural abstractions to manage complexity in a program by writing procedures.
Topic 3.14 Libraries
- Enduring Understanding (AAP-3): Programmers break down problems into smaller and more manageable pieces. By creating procedures and leveraging parameters, programmers generalize processes that can be reused. Procedures allow programmers to draw upon existing code that has already been tested, allowing them to write programs more quickly and with more confidence.
- Learning Objective (AAP-3.D): Select appropriate libraries or existing code segments to use in creating new programs.
- A software library contains procedures that may be used in creating new programs.
- Application program interfaces (APIs) are specifications for how the procedures in a library behave and can be used.
Topic 3.15 Random Values
- Enduring Understanding (AAP-3): Programmers break down problems into smaller and more manageable pieces. By creating procedures and leveraging parameters, programmers generalize processes that can be reused. Procedures allow programmers to draw upon existing code that has already been tested, allowing them to write programs more quickly and with more confidence.
- Learning Objective (AAP-3.E): For generating random values: a. Write expressions to generate possible values. b. Evaluate expressions to determine the possible results.
- Using random number generation in a program means each execution may produce a different result.
Topic 3.16 Simulations
- Enduring Understanding (AAP-3): Programmers break down problems into smaller and more manageable pieces. By creating procedures and leveraging parameters, programmers generalize processes that can be reused. Procedures allow programmers to draw upon existing code that has already been tested, allowing them to write programs more quickly and with more confidence.
- Learning Objective (AAP-3.F): For simulations: a. Explain how computers can be used to represent real-world phenomena or outcomes. b. Compare simulations with real-world contexts.
- Simulations are abstractions of more complex objects or phenomena for a specific purpose.
- Simulations facilitate the formulation and refinement of hypotheses related to the objects or phenomena under consideration.
Topic 3.17 Algorithmic Efficiency
- Enduring Understanding (AAP-4): There exist problems that computers cannot solve, and even when a computer can solve a problem, it may not be able to do so in a reasonable amount of time.
- Learning Objective (AAP-4.A): For determining the efficiency of an algorithm: a. Explain the difference between algorithms that run in reasonable time and those that do not. b. Identify situations where a heuristic solution may be more appropriate.
- A problem is a general description of a task that can (or cannot) be solved algorithmically.
- Algorithms with a polynomial efficiency or slower (constant, linear, square, cube, etc.) are said to run in a reasonable amount of time.
Topic 3.18 Undecidable Problems
- Enduring Understanding (AAP-4): There exist problems that computers cannot solve, and even when a computer can solve a problem, it may not be able to do so in a reasonable amount of time.
- Learning Objective (AAP-4.B): Explain the existence of undecidable problems in computer science.
- 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?”).
- An undecidable problem is one for which no algorithm can be constructed that is always capable of providing a correct yes-or-no answer.
Big Idea 4: Computer Systems and Networks (11–15% AP Exam Weighting)
- Students will learn how computer systems and networks, primarily the Internet, work.
- Students will learn about how information is transmitted on the Internet and about the safeguards that have been put in place to keep this system from breaking down.
- Students will learn the effect that dividing tasks across multiple computing devices can have on the speed at which processes can occur.
Topic 4.1 The Internet
- Enduring Understanding (CSN-1): Computer systems and networks facilitate the transfer of data.
- Learning Objective (CSN-1.A): Explain how computing devices work together in a network.
- A computer network is a group of interconnected computing devices capable of sending or receiving data.
- A computing system is a group of computing devices and programs working together for a common purpose.
- A computer network is a type of computing system.
- Routing is the process of finding a path from sender to receiver.
- Learning Objective (CSN-1.B): Explain how the Internet works.
- The Internet is a computer network consisting of interconnected networks that use standardized, open (nonproprietary) communication protocols.
- Learning Objective (CSN-1.C): Explain how data are sent through the Internet via packets.
- Information is passed through the Internet as a data stream.
- Data streams contain chunks of data, which are encapsulated in packets.
- Packets contain a chunk of data and metadata used for routing the packet between the origin and the destination on the Internet, as well as for data reassembly.
- Learning Objective (CSN-1.D): Describe the differences between the Internet and the World Wide Web.
- The World Wide Web is a system of linked pages, programs, and files.
- HTTP is a protocol used by the World Wide Web.
- The World Wide Web uses the Internet.
Topic 4.2 Fault Tolerance
- Enduring Understanding (CSN-1): Computer systems and networks facilitate the transfer of data.
- Learning Objective (CSN-1.E): For fault-tolerant systems, like the Internet: a. Describe the benefits of fault tolerance. b. Explain how a given system is fault-tolerant. c. Identify vulnerabilities to failure in a system.
- The Internet has been engineered to be fault-tolerant, with abstractions for routing and transmitting data.
- Redundancy is the inclusion of extra components that can be used to mitigate failure of a system if other components fail.
- When a system can support failures and still continue to function, it is called fault-tolerant.
Topic 4.3 Parallel and Distributed Computing
- Enduring Understanding (CSN-2): Parallel and distributed computing leverage multiple computers to more quickly solve complex problems or process large data sets.
- Learning Objective (CSN-2.A): For sequential, parallel, and distributed computing: a. Compare problem solutions. b. Determine the efficiency of solutions.
- Sequential computing is a computational model in which operations are performed in order one at a time.
- Parallel computing is a computational model where the program is broken into multiple smaller sequential computing operations, some of which are performed simultaneously.
- Distributed computing is a computational model in which multiple devices are used to run a program.
- Learning Objective (CSN-2.B): Describe benefits and challenges of parallel and distributed computing.
Big Idea 5: Impact of Computing (21–26% AP Exam Weighting)
- The creation of computer programs can have extensive impacts, some unintended, on societies, economies, and cultures.
- Students explore these effects, the legal and ethical concerns that come with programs, and the responsibilities of programmers.
- When using computing innovations and transmitting information via the Internet, students should be aware of the risk of sharing personal identifiable information about themselves, such as their age or address, and actively take steps to keep this information safe.
Topic 5.1 Beneficial and Harmful Effects
- Enduring Understanding (IOC-1): While computing innovations are typically designed to achieve a specific purpose, they may have unintended consequences.
- Learning Objective (IOC-1.A): Explain how an effect of a computing innovation can be both beneficial and harmful.
- Learning Objective (IOC-1.B): Explain how a computing innovation can have an impact beyond its intended purpose.
Topic 5.2 Digital Divide
- Enduring Understanding (IOC-1): While computing innovations are typically designed to achieve a specific purpose, they may have unintended consequences.
- Learning Objective (IOC-1.C): Describe issues that contribute to the digital divide.
- The “digital divide” refers to differing access to computing devices and the Internet, based on socioeconomic, geographic, or demographic characteristics.