The exam at a glance
| Section | Weight | Timing | What you do |
|---|---|---|---|
| I · Multiple choice | 55% | 1 hr 30 min · 42 questions | Mostly stand-alone questions, plus 1–2 small sets of 2 questions that share a code segment. You read, trace and evaluate Java code. |
| II · Free response | 45% | 1 hr 30 min · 4 questions | Write Java methods, a constructor and a full class: Q1 Methods & Control Structures, Q2 Class Design, Q3 Data Analysis with ArrayList, Q4 2D Array. The same four types every year. |
You type your code in Bluebook
Both sections are taken in College Board's Bluebook app. Free-response code is typed into the built-in editor (no autocomplete) and submitted automatically. The Java Quick Reference is available inside Bluebook.
The current course: 4 units, 25 FRQ points
The course is organized into 4 large units. Free-response questions total 25 points, Q1 Part B asks you to call String methods, and Q3 is about ArrayList. Inheritance is no longer in the course.
The multiple-choice section
42 questions in 90 minutes gives you a little over 2 minutes per question. Most of that time goes into tracing loops and method calls, so practice tracing on paper under a timer. Wrong answers lose no points.
Strategies that work
- Build a trace table: one column per variable, one row per loop pass. Don't do it in your head.
- Check the loop bounds first. < vs <= and starting at 0 vs 1 decide most answers.
- Watch integer division: 7 / 2 is 3, not 3.5.
- Use the Java Quick Reference to confirm method names and return types.
- For "which code works for all cases", try an empty list, one element and a negative number.
- Flag and move on after 3 minutes. Come back once the easy points are banked.
The 4 units, in plain English
Using Objects & Methods
Variables, data types, expressions, and calling methods on objects someone else wrote.
Be ready to: Use int, double and boolean; cast and spot integer division; use %; call static and instance methods; use the Math class; create objects with new; use String methods such as substring, indexOf, equals and compareTo.
Selection & Iteration
Making decisions and repeating work.
Be ready to: Write and simplify boolean expressions (including De Morgan's laws and short-circuiting); use if / else if; write while and for loops; nest loops; loop through Strings; build sum, min/max, count and digit-extraction algorithms.
Class Creation
Designing your own classes: what objects store and what they can do.
Be ready to: Write a class header, private instance variables and constructors; write accessor, mutator and other methods; explain static variables and methods; reason about scope and this; pass and return object references (and spot aliasing).
Data Collections
Storing and processing lots of data. The biggest unit and the heart of the exam.
Be ready to: Create and traverse arrays, ArrayLists and 2D arrays (row-major and column-major); use wrapper classes; read data from text files; trace linear and binary search; trace selection, insertion and merge sort; trace recursive methods; discuss data privacy and bias.
Units 2 and 4 together are well over half of the multiple-choice section: loops, arrays, ArrayLists and 2D arrays are where most points live. Unit 3 is the smallest slice there, but it gets a whole free-response question. Using old review books? Skip the inheritance chapters.
The 4 free-response questions
90 minutes, 4 questions, 25 raw points (45% of your score). The question types never change, and every question tests your ability to write working Java code.
Methods & Control Structures
Write two methods (or a constructor and a method) for a class you're given. Part A needs loops or if statements plus calls to the class's own methods; Part B needs String methods.
Practice substring boundaries, indexOf returning -1, and building a String in a loop.
Class Design
Write a complete class from a description and a table of example calls: header, instance variables, constructor and the required methods.
Turn the example table into instance variables and exact method headers.
Data Analysis with ArrayList
Write one method that uses, analyzes or changes data stored in an ArrayList, usually a list of objects you access through getter methods.
Know get, size, add and remove, and how to remove safely while looping.
2D Array
Write one method that uses, analyzes or changes data in a 2D array, such as finding a row or column that meets a condition, or counting neighbors.
grid.length is the rows; grid[0].length is the columns.
Time plan: Skim for 3 minutes, then about 20 minutes per question, leaving 6 minutes to check. Rubric points are given for individual correct pieces (the loop, the condition, the return), so a half-finished method can still earn most of the points.
Habits that earn points
- Read the examples table before writing anything.
- Use methods the question gives you. Don't rewrite them.
- Trace your code with one example from the question.
- No imports, comments or main needed.
- Stuck? Write the header and the loop anyway.
10 traps that cost points
Integer division
7 / 2 is 3. Cast first if you need a decimal: (double) 7 / 2 is 3.5.
Comparing Strings with ==
== checks whether two references point to the same object. Use s1.equals(s2) for content.
Looping one step too far
i <= arr.length crashes with an ArrayIndexOutOfBoundsException. The last index is length - 1.
Removing while looping forward
After list.remove(i), everything shifts left and the next item is skipped. Loop backwards instead.
length, length() or size()?
Arrays: arr.length. Strings: s.length(). ArrayLists: list.size().
substring's end is exclusive
"HELLO".substring(1, 3) is "EL": it stops before index 3.
Rows and columns swapped
grid.length is the number of rows; grid[0].length is the number of columns.
Redeclaring in the constructor
int count = start; makes a new local variable. Write count = start;.
Printing instead of returning
If the method's header says int or boolean, it must return a value on every path.
Leaving a free-response blank
Points are given for each correct piece. A header plus a sensible loop can still score.
A study roadmap to May
A steady plan beats a last-minute rush. Shift the months to match your teacher's pacing.
- Sep – Nov
Units 1–2: foundations
Types, casting, String methods, if statements, while and for loops. Trace 5 short code snippets a week and write one small program each weekend.
- Dec – Jan
Unit 3: build classes
Write classes with constructors, getters and methods. Do one Class Design and one Methods & Control Structures question every week.
- Feb – Mar
Unit 4: data collections
Arrays, ArrayLists, 2D arrays, searching, sorting and recursion. Add ArrayList and 2D array free-response practice as you finish each topic.
- April
Timed practice in Bluebook
Open the Bluebook test preview. Take one full multiple-choice set and one full free-response set under real timing, and log every mistake by unit.
- Early May
Fix weak spots
Redo every question you missed. Review the Java traps and the Quick Reference methods.
- May 2027
Exam day
Wednesday, May 12, 2027 (afternoon session). Sleep well and confirm your start time with your AP coordinator.
3 practice questions
Original questions written by ACT SAT GO in the style of the exam. The free PDF has 10, with full explanations.
- Unit 1 · String methods
String s = "PROGRAMMING"; What does System.out.println(s.substring(3, 7) + s.indexOf("M")); print?
- A GRAMM6
- B GRAM6
- C GRAM7
- D OGRA6
Show answer
Answer: B · GRAM6. Indexes start at 0. substring(3, 7) takes indexes 3–6, "GRAM" (index 7 is excluded). The first "M" is at index 6.
- Unit 2 · Boolean logic
Which expression is equivalent to !(x > 5 || y <= 2) for all integers x and y?
- A x <= 5 || y > 2
- B x < 5 && y > 2
- C x > 5 && y <= 2
- D x <= 5 && y > 2
Show answer
Answer: D. De Morgan's law: !(A || B) becomes !A && !B. The opposite of x > 5 is x <= 5, and the opposite of y <= 2 is y > 2.
- Unit 4 · Sorting
The array {5, 2, 9, 1, 7} is sorted into ascending order using selection sort. What does it look like after the first two passes of the outer loop?
- A {1, 2, 9, 5, 7}
- B {1, 2, 5, 9, 7}
- C {2, 5, 9, 1, 7}
- D {1, 2, 5, 7, 9}
Show answer
Answer: A. Pass 1: the smallest value 1 swaps with 5, giving {1, 2, 9, 5, 7}. Pass 2: the smallest remaining value 2 is already in place, so nothing changes. Choice C is what insertion sort gives after two passes.
How students score
Ranges reflect recent College Board score distributions and shift a little each year. Credit and placement policies vary by college.
Aiming for a 5 in AP Computer Science A?
Book a free diagnostic session. We'll find your weakest units, review your practice responses and give you a week-by-week plan to exam day.
