The AP CS A Course and Exam Description includes a large number of Essential Knowledge Statements. Most Essential Knowledge Statements refer to concepts, techniques, and vocabulary common in beginning Java programming.

Some words and phrases are less commonly used or have official meanings that differ somewhat from common usage. The material below is intended to help students understand the intended meanings of specific words and phrases as they relate to the AP CS A Exam. This is not intended as an exhaustive explanation of everything in the Course Description. You can just read the Course Description for that.

Unless otherwise noted, quotes are directly from the 2025 AP CS A Course Description.

Procedural abstraction & Method decomposition

“A method is a named block of code that only runs when it is called. A block of code is any section of code that is enclosed in braces. Procedural abstraction allows a programmer to use a method by knowing what the method does even if they do not know how the method was written.”

“Procedural abstraction provides a name for a process and allows a method to be used only knowing what it does, not how it does it. Through method decomposition, a programmer breaks down larger behaviors of the class into smaller behaviors by creating methods to represent each individual smaller behavior. A procedural abstraction may extract shared features to generalize functionality instead of duplicating code. This allows for code reuse, which helps manage complexity.”

When we write programs beyond trivial complexity, we break the functionality into procedures (also known as methods or functions). This allows us to write and test pieces of the overall program independently. It also allows us to avoid keeping the details of the entire program in our head while working with one part.

(We also break the functionality into classes. This is a major part of beginning programming in Java. See Class writing order for discussion of how to write a single class.)

See Procedural abstraction for additional details and an example.

See Parameters as abstractions for an example of generalizing functionality instead of duplicating code.

Attributes

“Attributes refer to the data related to the class and are stored in variables. Behaviors refer to what instances of the class can do (or what can be done with them) and are defined by methods.”

“An attribute is a type of data abstraction that is defined in a class outside any method or constructor. An instance variable is an attribute whose value is unique to each instance of the class. A class variable is an attribute shared by all instances of the class.”

The term attribute is used here to refer to both instance variables and class variables. Class variables are often known as static variables since the static modifier is used to distinguish them from instance variables.

The static modifier is often confused with the final modifier. Although it is common for attributes to be declared as static and final, the modifiers mean very different things.

See Static vs instance methods and fields for additional discussion.

Sequencing, selection, and iteration

“Sequencing defines an order for when steps in a process are completed. Steps in a process are completed one at a time.”

“Selection occurs when a choice of how the execution of an algorithm will proceed is based on a true or false decision.”

“Iteration is a form of repetition. Iteration statements change the flow of control by repeating a segment of code zero or more times as long as the Boolean expression controlling the loop evaluates to true.”

Sequencing refers to the basic concept that code runs in a specific order. Any code segment with more than one statement demonstrates sequencing.

Selection refers to code with conditional statements (if statements).

Iteration refers to code with loops.

Tools

“A compiler checks code for some errors. Errors detectable by the compiler need to be fixed before the program can be run.”

“Code can be written in any text editor; however, an integrated development environment (IDE) is often used to write programs because it provides tools for a programmer to write, compile, and run code.”

Examples of IDEs include Eclipse, BlueJ, jGRASP, IntelliJ, and VS Code.

As discussed in other places in the Course Description, a compiler does more than check code for errors. The focus here is on distinguishing errors caught by the compiler before code is run from errors that appear while the code is running.

Error types

“A syntax error is a mistake in the program where the rules of the programming language are not followed. These errors are detected by the compiler.”

“A run-time error is a mistake in the program that occurs during the execution of a program. Run-time errors typically cause the program to terminate abnormally.”

“An exception is a type of run-time error that occurs as a result of an unexpected error that was not detected by the compiler. It interrupts the normal flow of the program’s execution.”

“A logic error is a mistake in the algorithm or program that causes it to behave incorrectly or unexpectedly. These errors are detected by testing the program with specific data to see if it produces the expected outcome.”

Syntax errors are often called compile-time errors. They are detected and flagged by the compiler. Many IDEs highlight compile time errors (ex: by underlining in red) and provide additional explanation.

Run-time errors cause the program to stop, often described as crashing, after it has been run. Many run-time errors are exceptions (ex: IndexOutOfBoundsException, NullPointerException, ArithmeticException, IllegalStateException, IllegalArgumentException).

All exceptions are run-time errors. Not all run-time errors are exceptions. The StackOverflowError, often seen during infinite recursion is not an exception.

I would be very surprised if the AP CS A Exam contained questions that attempted to distinguish between exceptions and run-time errors. If the Exam did have such questions, they would be limited to the distinctions quoted above from the Course Description.

System reliability & Testing

“System reliability refers to the program being able to perform its tasks as expected under stated conditions without failure. Programmers should make an effort to maximize system reliability by testing the program with a variety of conditions.”

As discussed above in Procedural abstraction & Method decomposition, methods can be written and tested independently of a larger program. Consider the getFirst method below from Finding min/max with fixed number of values.

// precondition: a != null && b != null && c != null
public static String getFirst(String a, String b, String c)
{
    String first = a;

    if(b.compareTo(first) < 0)
        first = b;

    if(c.compareTo(first) < 0)
        first = c;

    return first;
}

The method should be tested with situations in which each parameter is the first (a, b, and c). The method should also be tested with situations in which more than one parameter has the same value.

A larger program itself can also be tested. Programs that accept user input should be tested with a variety of valid and invalid inputs.

“Legal issues and intellectual property concerns arise when creating programs. Programmers often reuse code written by others and published as open source and free to use. Incorporation of code that is not published as open source requires the programmer to obtain permission and often purchase the code before integrating it into their program.”

Unless explicitly permitted, programmers cannot legally incorporate code written by others into their own programs. Some code published as open source is explicitly allowed to be used in other programs without payment.

The decision to allow code to be used freely in other programs belongs to the owner (sometimes the author) of the original code, not the programmer looking to use the code in a new program.

Data sets

“A data set is a collection of specific pieces of information or data.”

“Data can be represented in a diagram by using a chart or table. This visual can be used to plan the algorithm that will be used to manipulate the data.”

“Contents of a data set might be related to a specific question or topic and might not be appropriate to give correct answers or extrapolate information for a different question or topic.”

“Data sets can be manipulated and analyzed to solve a problem or answer a question. When analyzing data sets, values within the set are accessed and utilized one at a time and then processed according to the desired outcome.”

“Some data sets are incomplete or contain inaccurate data. Using such data in the development or use of a program can cause the program to work incorrectly or inefficiently.”

The 2026 AP CS A Exam is the first to feature data sets. The AP CS Principles Exam has featured data sets for a while. Some questions on the AP CSP Exam have focused on determining whether specific questions can be answered using provided data. Other AP CSP questions have asked which given data sets can be combined to answer specific questions.

Answering these questions does not require special technical knowledge. Read the question, look at the provided data, and answer the question.

Algorithmic bias & Bias in data sets

“Algorithmic bias describes systemic and repeated errors in a program that create unfair outcomes for a specific group of users.”

“Programmers should be aware of the data set collection method and the potential for bias when using this method before using the data to extrapolate new information or drawing conclusions.”

Bias here refers to program behavior that disadvantages groups of users. Groups could be gender, enthnicity, interest in a particular activity, etc. Disadvantages could include the program not functioning at all or producing incorrect output.

Bias can result from errors in programming and errors in testing. For example, a facial recognition program tested only with female vounteers may fail to recognize the faces of males.

Bias can result from issues with data collection. For example, a data set created by testing students in advanced math classes for reading comprehension is not likely to be representative of the overall student population.

Privacy

“When using a computer, personal privacy is at risk. When developing new programs, programmers should attempt to safeguard the personal privacy of the user.”

Many programs and systems require users to provide at least some information for the program to be useful. Privacy concerns include what that information can be used to infer about users. Privacy concerns can be raised when information from one system is combined with information from other systems.