The VR School
Financial LiteracyGive
Enroll
CSA
All Courses
AP ExamUC A-G · Section CUC Honors · +1.0 GPAMay 2026

AP Computer Science A
Master Java. Score 5.

AP CS A: Object-Oriented Programming in Java

The most comprehensive agentic AP Computer Science A course. From primitive types to recursion — master every Java concept, ace every FRQ type, and score a 5 — guided by Dr. Kai Nakamura and SofAI.

Start with Dr. Kai
AP Resources
5
Score Target
Quick LinksCollegeBoard AP CS A VRS AP Resources AP Seminar Exemplar ↗
Exam: May 2026
Exam Blueprint

Two Sections · MC + 4 FRQs

🔵

Multiple Choice

Section I · Single Select
50%90 min40 questions
  • › Single-select questions covering all 10 AP CS A units
  • › Tests code reading, tracing, algorithm analysis, and OOP concepts
  • › ~40% code tracing, ~60% concept application and algorithm design

Score 5 Tip: Practice tracing code by hand before running it. The exam will show you code and ask what it outputs — learn to step through loops and method calls mentally, one line at a time.

🟣

FRQ 1 — Methods & Control Structures

Section II · FRQ 1
12.5%90 min (shared)1 FRQ (~9 pts)
  • › Write methods using iteration (for/while loops) and conditionals (if/else)
  • › May involve String manipulation, mathematical algorithms, or helper method calls
  • › Tests writing clean, correct Java syntax under pressure

Score 5 Tip: Write the method header first, then think through edge cases before writing the body. Always ask: what should this return when the input is empty, zero, or at the boundary?

🟠

FRQ 2 — Class Design

Section II · FRQ 2
12.5%90 min (shared)1 FRQ (~9 pts)
  • › Design a complete class: instance variables, constructors, accessor/mutator methods
  • › May extend a given superclass or implement a given interface
  • › Tests encapsulation, proper use of private/public, and constructor logic

Score 5 Tip: Write private instance variables first, then public constructors, then accessors (getters) and mutators (setters). Check that your constructor initializes EVERY instance variable.

🟡

FRQ 3 — Array/ArrayList & FRQ 4 — 2D Arrays

Section II · FRQ 3 & 4
25%90 min (shared)2 FRQs (~9 pts each)
  • › FRQ 3: Traverse, search, or sort a 1D array or ArrayList — use indexed or enhanced for-loops
  • › FRQ 4: Use nested loops to traverse a 2D array in row-major or column-major order
  • › Both FRQs often build on a class defined earlier in the exam

Score 5 Tip: For 2D arrays, always declare row and column indices clearly (row i, column j). Nested loops should iterate rows in the outer loop and columns in the inner loop unless the problem specifies otherwise.

Score Distribution (2024)

Where Students Land

~70,000 students take AP CS A annually. With the right Java fundamentals and FRQ practice, a 5 is very achievable.

5
Extremely Qualified
← Your target26%
4
Well Qualified
21%
3
Qualified
20%
2
Possibly Qualified
17%
1
No Recommendation
16%

Score 5 Roadmap

Your point targets for the May 2026 exam

🔵

Multiple Choice Target: ≥ 30 of 40 correct (75%+)

⚙️

FRQ 1 Methods Target: 9/9 (complete logic, correct Java syntax)

🏗

FRQ 2 Class Design Target: 9/9 (all fields, constructor, methods)

📋

FRQ 3 Array/ArrayList Target: 9/9 (correct traversal, no bounds errors)

🔲

FRQ 4 2D Array Target: 9/9 (nested loops, correct element access)

CollegeBoard CED Aligned

Ten AP Computer Science A Units

🔢
UNIT 12–5%

Primitive Types

Expand ›

Key Topics

  • int, double, boolean, char data types
  • Arithmetic operators and integer division/modulo
  • Type casting (widening and narrowing)
  • String literals and basic String operations
  • Math.random() and type promotion

Key Terms

primitive type
basic data type stored by value (int, double, boolean, char)
integer division
dividing two ints truncates the decimal (7/2 == 3)
modulo (%)
returns the remainder of division (7 % 2 == 1)
type casting
explicit conversion between types, e.g. (double) anInt
overflow
when an int exceeds its maximum value and wraps around
compound assignment
shorthand operators like +=, -=, *=, /=, %=
FRQ Practice Prompt

FRQ practice: Write a static method int countDigits(int n) that returns the number of digits in the positive integer n. For example, countDigits(4523) returns 4 and countDigits(7) returns 1. Use only arithmetic operations (division and modulo). Trace your method for n = 100.

Practice with Dr. Kai →

Curated Video Lessons

Java Primitive Data Types — AP CS A
content

Java Primitive Data Types — AP CS A

AP CS A Review9 min
Java Operators and Expressions
content

Java Operators and Expressions

CS Awesome11 min
Type Casting in Java — AP CS A Review
review

Type Casting in Java — AP CS A Review

Coding with John8 min
📦
UNIT 25–7.5%

Using Objects

Expand ›

Key Topics

  • Constructing objects with new keyword
  • Calling instance methods and static methods
  • String class methods (substring, indexOf, length, equals, compareTo)
  • Math class methods (Math.abs, Math.pow, Math.sqrt, Math.random)
  • Null references and NullPointerException

Key Terms

object
instance of a class that stores state and exposes behavior
constructor
special method that initializes a new object
null
reference that points to no object; causes NullPointerException if dereferenced
immutable
object whose state cannot change after creation (e.g., String)
String concatenation
joining strings with + operator; converts non-Strings automatically
static method
method called on a class, not an instance (e.g., Math.abs())
FRQ Practice Prompt

Short practice: Write an expression that produces a random integer from 1 to 6 inclusive (simulating a die roll) using Math.random(). Then write a method String abbreviate(String s) that returns the first 3 characters of s followed by '...' if s.length() > 3, otherwise returns s unchanged.

Practice with Dr. Kai →

Curated Video Lessons

Java String Methods — AP CS A
content

Java String Methods — AP CS A

AP CS A Review13 min
Math Class Methods — AP CS A
content

Math Class Methods — AP CS A

CS Awesome8 min
Objects and Classes — Java Basics
overview

Objects and Classes — Java Basics

Coding with John12 min
🔀
UNIT 315–17.5%

Boolean Expressions and if Statements

Expand ›

Key Topics

  • Boolean expressions (==, !=, <, >, <=, >=)
  • Logical operators (&& and || and !)
  • De Morgan's Laws for simplifying boolean expressions
  • if, if-else, if-else-if chains
  • Nested conditionals and short-circuit evaluation

Key Terms

boolean expression
expression that evaluates to true or false
short-circuit evaluation
&&: stops at first false; ||: stops at first true
De Morgan's Laws
!(A && B) == (!A || !B); !(A || B) == (!A && !B)
nested conditional
an if statement inside another if statement
equality vs. identity
== on objects checks reference; .equals() checks content
dangling else
ambiguity when else matches innermost if by default
FRQ Practice Prompt

FRQ practice: Write a method boolean isLeapYear(int year) that returns true if the year is a leap year. A year is a leap year if it is divisible by 4, EXCEPT for years divisible by 100, which must also be divisible by 400. Trace your method for years 1900, 2000, and 2024.

Practice with Dr. Kai →

Curated Video Lessons

Boolean Expressions — AP CS A
content

Boolean Expressions — AP CS A

AP CS A Review10 min
if Statements and Conditionals — Java
content

if Statements and Conditionals — Java

CS Awesome12 min
De Morgan's Laws — AP CS A Practice
review

De Morgan's Laws — AP CS A Practice

Barron's AP CS A7 min
🔁
UNIT 417.5–22.5%

Iteration

Expand ›

Key Topics

  • while loops and infinite loop prevention
  • for loops (initialization, condition, update)
  • for-each (enhanced for) loops over arrays and ArrayLists
  • Nested loops and their time complexity
  • String traversal using charAt and substring

Key Terms

while loop
repeats a block while condition is true; may execute zero times
for loop
compact iteration with init; condition; update in one line
for-each loop
iterates over each element in an array or Iterable
off-by-one error
loop runs one too many or too few times; common boundary mistake
nested loop
loop inside another loop; total iterations = outer × inner
loop invariant
condition that remains true before and after each iteration
FRQ Practice Prompt

FRQ practice: Write a method String removeVowels(String s) that returns a new string with all vowels (a, e, i, o, u — both upper and lower case) removed. For example, removeVowels('Hello World') returns 'Hll Wrld'. Then write a second version using a for loop that iterates by index.

Practice with Dr. Kai →

Curated Video Lessons

while and for Loops — AP CS A
content

while and for Loops — AP CS A

AP CS A Review14 min
For-Each Loops in Java
content

For-Each Loops in Java

CS Awesome9 min
Nested Loops and String Traversal
advanced

Nested Loops and String Traversal

Coding with John11 min
🏗
UNIT 55–7.5%

Writing Classes

Expand ›

Key Topics

  • Instance variables with private access modifier
  • Constructors (default and parameterized)
  • Accessor methods (getters) and mutator methods (setters)
  • The this keyword for disambiguation
  • Encapsulation principles and toString method

Key Terms

encapsulation
hiding internal state with private fields, exposing behavior via public methods
instance variable
variable declared in a class, unique to each object
accessor (getter)
public method that returns the value of a private field
mutator (setter)
public method that changes the value of a private field
this keyword
reference to the current object; disambiguates field from parameter
toString()
method that returns a String representation of an object
FRQ Practice Prompt

FRQ Class Design: Design a class BankAccount with a private String owner, private double balance, and private int transactionCount. Write a constructor, getters for all three fields, a deposit(double amount) method that adds to balance and increments the count, and a toString() method. Then add a method boolean withdraw(double amount) that returns true and updates balance only if sufficient funds exist.

Practice with Dr. Kai →

Curated Video Lessons

Writing Java Classes — AP CS A
content

Writing Java Classes — AP CS A

AP CS A Review15 min
Encapsulation — Private Fields and Getters/Setters
content

Encapsulation — Private Fields and Getters/Setters

CS Awesome11 min
The this Keyword in Java
review

The this Keyword in Java

Coding with John7 min
📋
UNIT 610–15%

Array

Expand ›

Key Topics

  • Array declaration, initialization, and default values
  • Accessing and updating array elements by index
  • Traversal algorithms: find min/max, sum, average, reverse
  • Partial arrays and tracking meaningful elements
  • Arrays passed as parameters (reference semantics)

Key Terms

array
fixed-length ordered collection of elements of the same type
index
integer position in array; 0-based (first element is index 0)
ArrayIndexOutOfBoundsException
thrown when accessing an index outside [0, length-1]
reference semantics
array variable stores a reference; passing an array passes the reference
default value
int → 0, double → 0.0, boolean → false, object → null
partial array
array where only first k of n slots hold meaningful data
FRQ Practice Prompt

FRQ Array practice: Write a method int[] removeDuplicates(int[] arr) that returns a new array containing only the first occurrence of each value from arr. For example, removeDuplicates(new int[]{3, 1, 3, 2, 1}) returns [3, 1, 2]. Trace your algorithm step by step for the example input.

Practice with Dr. Kai →

Curated Video Lessons

Java Arrays — AP CS A Review
content

Java Arrays — AP CS A Review

AP CS A Review14 min
Array Traversal Algorithms
content

Array Traversal Algorithms

CS Awesome12 min
Common Array Algorithms — AP CS A FRQ
practice

Common Array Algorithms — AP CS A FRQ

Barron's AP CS A10 min
📝
UNIT 72.5–7.5%

ArrayList

Expand ›

Key Topics

  • ArrayList<E> declaration and instantiation
  • add(E), add(int index, E), remove(int index), get(int index), set(int index, E), size()
  • Traversal with enhanced for-loop and indexed for-loop
  • Removing elements while traversing (iterate backwards or use iterator)
  • ArrayList vs. array trade-offs

Key Terms

ArrayList
resizable array-based list in java.util; size grows/shrinks dynamically
generic type parameter
type in angle brackets, e.g. ArrayList<String>, ensures type safety
autoboxing
automatic conversion between primitive (int) and wrapper (Integer)
ConcurrentModificationException
thrown when modifying ArrayList while iterating with for-each
wrapper class
class that wraps a primitive: Integer, Double, Boolean
list interface
ArrayList implements List<E>, a contract for ordered collections
FRQ Practice Prompt

FRQ ArrayList practice: Write a method void removeOdds(ArrayList<Integer> list) that removes all odd numbers from the list in place. For example, if list contains [1, 2, 3, 4, 5], after the call it contains [2, 4]. Explain why iterating forward with a for-each loop would fail, and write the correct solution iterating backwards.

Practice with Dr. Kai →

Curated Video Lessons

ArrayList in Java — AP CS A
content

ArrayList in Java — AP CS A

AP CS A Review13 min
ArrayList Methods and Traversal
content

ArrayList Methods and Traversal

CS Awesome10 min
Removing from ArrayList — Traversal Pitfalls
advanced

Removing from ArrayList — Traversal Pitfalls

Coding with John9 min
🔲
UNIT 87.5–10%

2D Array

Expand ›

Key Topics

  • Declaration and initialization of 2D arrays
  • Row-major order traversal with nested for loops
  • Accessing elements with arr[row][col]
  • Column-major traversal and diagonal traversal
  • Common 2D array algorithms: row sums, column sums, search

Key Terms

2D array
array of arrays; elements accessed with two indices [row][col]
row-major order
traversing all columns in one row before moving to the next row
arr.length
number of rows in a 2D array
arr[0].length
number of columns in a 2D array (assumes rectangular)
ragged array
2D array where rows can have different lengths (not on AP exam but good to know)
nested loop
outer loop over rows, inner loop over columns for 2D traversal
FRQ Practice Prompt

FRQ 2D Array practice: Write a method int[] rowSums(int[][] grid) that returns a 1D array where element i is the sum of all values in row i of grid. Then write a method boolean isDiagonallySymmetric(int[][] grid) that returns true if grid[i][j] == grid[j][i] for all valid i and j. Trace both methods on a 3×3 example.

Practice with Dr. Kai →

Curated Video Lessons

2D Arrays in Java — AP CS A
content

2D Arrays in Java — AP CS A

AP CS A Review12 min
Nested Loops and 2D Array Traversal
content

Nested Loops and 2D Array Traversal

CS Awesome11 min
2D Array FRQ Strategies — AP CS A
practice

2D Array FRQ Strategies — AP CS A

Barron's AP CS A10 min
🧬
UNIT 95–10%

Inheritance

Expand ›

Key Topics

  • extends keyword and IS-A relationship
  • Calling superclass constructors with super()
  • Method overriding and @Override annotation
  • Polymorphism: superclass reference to subclass object
  • Abstract classes vs. concrete classes, instanceof operator

Key Terms

inheritance
subclass acquires fields and methods of its superclass
extends
keyword declaring a class as a subclass of another
super()
call to superclass constructor; must be first statement in subclass constructor
method overriding
subclass provides its own implementation of a superclass method
polymorphism
ability to treat objects of different subclasses through a common superclass type
abstract class
class that cannot be instantiated; may contain abstract methods
FRQ Practice Prompt

FRQ Inheritance practice: Given a superclass Shape with a constructor Shape(String color) and method double area(), write a subclass Circle that adds a private double radius field, calls the superclass constructor, overrides area() to return π × radius², and overrides toString() to return 'Circle[color=X, radius=Y]'. Then explain what getClass() returns for a Circle object stored in a Shape variable.

Practice with Dr. Kai →

Curated Video Lessons

Inheritance in Java — AP CS A
content

Inheritance in Java — AP CS A

AP CS A Review14 min
Polymorphism and Method Overriding
content

Polymorphism and Method Overriding

CS Awesome12 min
Abstract Classes and Interfaces — AP CS A
advanced

Abstract Classes and Interfaces — AP CS A

Coding with John10 min
🔃
UNIT 105–7.5%

Recursion

Expand ›

Key Topics

  • Base case and recursive case structure
  • Tracing recursive calls with a call stack
  • Recursive methods on integers (factorial, Fibonacci, digit sum)
  • Recursive methods on Strings (reverse, palindrome check)
  • Binary search as a recursive algorithm

Key Terms

recursion
method that calls itself to solve a smaller version of the same problem
base case
condition that stops recursion without a further recursive call
recursive case
the part of the method that makes a recursive call toward the base case
call stack
stack of active method frames; grows with each recursive call
stack overflow
error when recursion is infinite and call stack exceeds memory
binary search
O(log n) search that halves the search space at each step
FRQ Practice Prompt

FRQ Recursion practice: Write a recursive method int sumDigits(int n) that returns the sum of the digits of the non-negative integer n. For example, sumDigits(423) returns 9. Identify the base case and recursive case. Then trace the call stack for sumDigits(423), showing every intermediate call and return value.

Practice with Dr. Kai →

Curated Video Lessons

Recursion in Java — AP CS A
content

Recursion in Java — AP CS A

AP CS A Review13 min
Tracing Recursion — Call Stack
content

Tracing Recursion — Call Stack

CS Awesome11 min
Binary Search — Recursive Implementation
advanced

Binary Search — Recursive Implementation

Coding with John9 min
50% of Total Score

FRQ Mastery Suite

AP CS A's FRQ section has 4 specific question types — each one is predictable. Master the structure of each and you've locked in 50% of your score.

FRQ Coach →
⚙️~12.5%
Section II · FRQ 1

Methods and Control Structures FRQ

FRQ 1 · Always Present · 90 min (shared)

Write one or two methods that use iteration (for/while loops) and conditionals (if/else). Often involves String manipulation, numerical algorithms, or calls to provided helper methods. May also ask you to trace or modify existing code.

Scoring Criteria
· Method header: correct return type, name, and parameters
· Control flow: correct use of loops and conditionals for all cases
· Return statement: returns the correct type and value
· Edge cases: handles empty input, zero, or boundary values correctly
Score 5 Strategy
Write the method signature first — return type, name, parameter types — before writing the body
Identify loops vs. conditionals before writing any code; sketch the logic in pseudocode first
Always handle the empty/zero edge case explicitly — the rubric usually awards a point for it
If you use a helper method provided in the problem, call it by name — don't re-implement it
Check your return statement last: does the returned value match the declared return type?
Model Opener

public [returnType] [methodName]([params]) { // handle base/edge case first for (/* loop over input */) { // process each element } return [result]; }

🏗~12.5%
Section II · FRQ 2

Class Design FRQ

FRQ 2 · Always Present · 90 min (shared)

Design a complete Java class from scratch or complete a partially given class. Must include private instance variables, at least one constructor, accessors and/or mutators, and one or more instance methods. May require extending a given superclass.

Scoring Criteria
· Instance variables: declared private with correct types
· Constructor: initializes all instance variables, calls super() if needed
· Accessors/mutators: correct signatures and return/update logic
· Instance methods: implements the described behavior correctly
Score 5 Strategy
Start with private instance variables — declare every field the problem description mentions
Write the constructor next and initialize EVERY instance variable, including calling super() if inheriting
Write accessor (get) methods before mutator (set) methods — they're simpler and build confidence
Read the method description twice: identify the return type, parameters, and expected behavior
Use this.fieldName when constructor parameter names shadow instance variable names
Model Opener

public class [ClassName] extends [SuperClass] { private [type] [field1]; private [type] [field2]; public [ClassName]([params]) { super([superParams]); this.[field1] = [param1]; } public [type] get[Field1]() { return [field1]; } }

📋~12.5%
Section II · FRQ 3

Array and ArrayList Algorithms FRQ

FRQ 3 · Always Present · 90 min (shared)

Traverse, search, modify, or build a 1D array or ArrayList. Common tasks: find an element satisfying a condition, build a filtered list, count occurrences, or rearrange elements. May combine ArrayList and a class defined earlier in the exam.

Scoring Criteria
· Correct traversal: loop bounds are correct (0 to length-1 or 0 to size()-1)
· Element access: uses correct syntax (arr[i] vs. list.get(i))
· Modification logic: correctly identifies and processes qualifying elements
· No bounds errors: no ArrayIndexOutOfBoundsException or invalid index access
Score 5 Strategy
Decide up front: use indexed for-loop (arr[i]) or enhanced for-each? For-each is safer when you don't need the index
For ArrayList: never remove elements while iterating forward — iterate backwards or build a new list
Check your loop bounds: arrays go 0 to arr.length-1; ArrayLists go 0 to list.size()-1
If the problem asks you to return a new list, declare it before the loop: ArrayList<Type> result = new ArrayList<Type>()
Trace your solution on the provided example input before moving on — catch off-by-one errors early
Model Opener

// Array version: for (int i = 0; i < arr.length; i++) { if (/* condition on arr[i] */) { // process arr[i] } } // ArrayList version (remove-safe): for (int i = list.size() - 1; i >= 0; i--) { if (/* condition */) { list.remove(i); } }

🔲~12.5%
Section II · FRQ 4

2D Array FRQ

FRQ 4 · Always Present · 90 min (shared)

Traverse a 2D array using nested loops to compute row/column statistics, search for values, or transform the grid. Often involves a class defined elsewhere in the exam that stores the 2D array as an instance variable.

Scoring Criteria
· Outer loop: correctly iterates over rows using arr.length
· Inner loop: correctly iterates over columns using arr[0].length or arr[i].length
· Element access: uses arr[row][col] syntax correctly throughout
· Algorithm logic: correctly implements the required computation or search
Score 5 Strategy
Name your loop variables clearly: row and col (not i and j alone) to avoid mental confusion
Check the problem: does it want row-major (row outer, col inner) or column-major (col outer, row inner) traversal?
Use arr.length for the row bound and arr[0].length for the column bound in rectangular arrays
If the 2D array is an instance variable of a class, remember to access it through the object: grid.getArray()[row][col]
For diagonal traversal: the main diagonal is where row == col; validate this condition inside the loop
Model Opener

for (int row = 0; row < grid.length; row++) { for (int col = 0; col < grid[0].length; col++) { // access grid[row][col] // apply algorithm } }

Expert Insight

Score 5 Insider Tips

☕

Write syntactically correct Java. You lose points for wrong method headers, missing return statements, or using = instead of ==. Practice writing Java code by hand — the exam doesn't have an IDE to catch your errors.

🔍

Trace code before you write it. When asked to implement a method, trace through the expected behavior with a simple example first. This prevents off-by-one errors and reveals edge cases before you commit to code.

📦

Use helper methods provided in the problem. The exam often gives you a method — call it! Re-implementing a provided helper from scratch wastes time and introduces errors. Trust and use what's given.

✅

Answer every FRQ part, even partially. Partial credit is awarded per sub-part. If you can't write the full method, write the method header and leave a comment explaining your approach — it can earn a point.

🔲

Master 2D array traversal cold. FRQ 4 is always a 2D array question. If you can write nested row/column loops correctly every time without thinking, you've locked in guaranteed points on 12.5% of the exam.

🏗

For Class Design FRQs, always write private instance variables first. Then the constructor, then getters/setters, then other methods. This systematic order prevents forgetting fields and earns points methodically.

Curated for Score 5

Practice Tests & Resources

🏛
OFFICIALFREE

CollegeBoard AP CS A

Official CED, unit guides, sample FRQs, and scoring guidelines. The definitive source.

Open resource
📂
OFFICIALFREE

Past AP CS A FRQs (2013–2024)

Every past FRQ with scoring guidelines. Completing 3+ sets under timed conditions is the single highest-leverage activity.

Open resource
💻
HIGHLY RECOMMENDEDFREE

CodeHS AP CS A

Complete AP CS A curriculum with interactive coding exercises, video lessons, and auto-graded Java problems. Excellent pacing.

Open resource
📚
FREE TEXTBOOKFREE

Runestone Academy — CS Awesome

The official free AP CS A textbook with embedded coding exercises. Written by AP CS A teachers, aligned to the CED.

Open resource
🎯
DRILL PRACTICEFREE

CodingBat Java Practice

Hundreds of Java practice problems organized by difficulty. Perfect for drilling method writing until it's automatic.

Open resource
📖
COMPREHENSIVEFREE

Fiveable AP CS A

Complete course review, unit summaries, FRQ practice, and live study sessions with expert teachers.

Open resource
🎓
FREE PRACTICEFREE

AP CS A on Khan Academy

Free practice questions and video explanations for all major AP CS A topics. Good for concept reinforcement.

Open resource
📝
PRACTICE MCQ

Albert.io AP CS A

High-quality AP-style multiple choice questions with explanations. Mimics the actual exam difficulty and style.

Open resource
AI-Powered Progress

16-Week Score 5 Study Plan

Weeks 1–3

Phase 1: Java Foundations — Primitives, Objects, Conditionals

  • Complete Units 1–3: primitives, String/Math methods, boolean logic
  • Write 10 short methods per week on CodingBat
  • Daily: one code-tracing exercise (trace without running the code)
  • FRQ practice: one Methods & Control Structures FRQ per week
Weeks 4–7

Phase 2: Core OOP — Iteration, Classes, Arrays

  • Deep dive: Units 4–6 — master all loop types and array traversal
  • Write a complete class from scratch each week (Unit 5)
  • Practice 5 array algorithm problems per session (sum, min, max, search, reverse)
  • FRQ practice: one Class Design FRQ per week under 22-minute time limit
Weeks 8–11

Phase 3: Data Structures + Advanced OOP — ArrayList, 2D Arrays, Inheritance

  • Complete Units 7–9: ArrayList operations, 2D array traversal, inheritance hierarchies
  • Write nested loop code every day — 2D arrays require repetition to master
  • Practice full inheritance chains: write Animal → Dog → GuideDog examples
  • FRQ practice: one Array/ArrayList FRQ and one 2D Array FRQ per week
Weeks 12–16

Phase 4: Recursion Mastery + Full Exam Simulation

  • Master Unit 10: trace recursion call stacks, implement binary search recursively
  • One full timed practice exam per week (40 MC in 90 min + 4 FRQs in 90 min)
  • Review every wrong MC answer with Dr. Kai (SofAI chat)
  • Final review: write all 4 FRQ types from memory — method, class, array, 2D array
Official & Curated

AP Resources Hub

🏛
Official Source

CollegeBoard AP CS A

Official course description, exam format, sample FRQs with scoring guidelines, and AP Classroom access.

Visit AP Central →
📚
The VR School

VRS AP Resources Center

All VR School AP course resources, study guides, and score submission guidance.

Open AP Resources →
⭐
Student Exemplar

AP Seminar Exemplar by Jiang

See the standard every VRS student aspires to — and the path to getting there.

View Exemplar →
Agentic AI Tutoring

Your Score 5 AI Tutors

Dr. Kai Nakamura is your AP CS A expert — every FRQ type, Java syntax rule, and scoring rubric. SofAIconnects Computer Science to every other subject you're studying.

🏗 Walk me through how to design a complete Java class for the Class Design FRQ🔃 Trace this recursive method step by step and explain the call stack📋 I keep making off-by-one errors in array loops — help me fix this once and for all🔲 Give me a timed 2D array FRQ and grade my solution against the rubric
🌟 Next Level

Your CS Skills Are an Academic Superpower — Use Them in AP Seminar

AP CS A builds exactly the skills AP Seminar demands: logical argumentation, systematic problem decomposition, and evidence-based reasoning. See how Jiang combined technical and interdisciplinary thinking to build an outstanding portfolio recognized at the national level.

View AP Seminar ExemplarExplore AP Seminar →
🎓
💻

Ready to Score a 5 in AP Computer Science A?

Enroll in the most comprehensive, AI-powered AP CS A course available. WASC accredited. UC A-G Section C approved. Exam: May 2026.

Browse All Courses

WASC Accredited · UC A-G Approved · CollegeBoard Aligned · Exam: May 2026

Financial literacy should belong to everyone

Help California students build money confidence.

Give to the endowment →Open financial literacy hub
VR
The VR School

The world's first accredited Spatial Intelligence school. WASC-accredited. UC A-G approved. 402+ students. 20+ countries.

520 Lasuen Mall #200, Stanford, California, CA 94309
(650) 422 9180
admissions@thevrschool.org
WASC Accredited

Fully Accredited for Grades 6–12 by ACS WASC

Code: 43 46070 999Grades 6–12

World Labs Partner ✦

Spatial Intelligence · Marble · Spark.js

School

  • About Us
  • Staff
  • Accreditation
  • School Profile
  • Endowment
  • Corporate Giving
  • Careers

Programs

  • UC A-G Courses
  • California Personal Finance
  • CVC Dual Enrollment
  • CVC Pathway OS
  • iBuildme
  • iBuildme App
  • iTeachXR LMS
  • AP Seminar Studio
  • Credentials
  • AI Program
  • VR Labs
  • VR Experiences
  • VR Network

Spatial Intelligence

  • Spatial Lab ✦
  • Moonshots TV
  • World Labs Marble ↗
  • The School That Shouldn't Exist
  • Website Evolution Archive
  • Media & Stories
  • VR Explorer

Support

  • Help & Support
  • Contact
  • Blog
  • Headset Safety
  • Privacy Policy
  • Terms of Service

© 2026 The VR School · All rights reserved · Spatial Intelligence Lab ✦

402+ students · Stanford · Palo Alto · China · Singapore

91% Math · 89% Science · 86% ELA · WASC · UC A-G