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
“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.