Five days, one file, one certificate at the end. Each day builds on real Java classes - reading them, predicting what they'll do, then writing your own.
Here's the full Robot class. Notice it has public methods (callable from anywhere), a private method (only callable from inside the class itself), overloaded constructors and an overloaded move() method (same name, different parameter lists), and static factory methods that build a Robot without needing one to already exist.
For each item below: type your prediction first, then click Reveal - don't peek early, the whole point is predicting before you know.
You only get 4 reveals total, across all 12 items - pick them wisely. Type a real prediction for every one of the 12, but you can only check your answer against the correct one 4 times. Once you've used all 4, the Reveal button disappears everywhere - the rest you'll have to trust your own reasoning on, same as on exam day.
Here's a Point class. Its methods lean on Math.sqrt, Math.pow, and Math.abs to calculate real distances between points. For each activity below, work out the number by hand and type it in - no multiple choice, just the actual math.
Answers are checked as numbers, so typing 5 or 5.0 both count - decimals within a small rounding tolerance are fine too.
Below is a SlotMachine class with 10 blanks, numbered /* BLANK N */ right where each one goes. Every blank only needs what you already know - assigning a field, calling an existing method, or writing a return. isJackpot() and randomSymbol() are already fully written for you, since they use if/else and array indexing you haven't covered yet - you're not expected to write those parts, just read them.
You get 2 hints total, across all 10 blanks - a hint reveals that blank's correct answer, so use them on the ones you're actually stuck on. Once both are used, the Hint button disappears everywhere.
Two classes, both with private/protected/public fields and methods, and a lot of variables deliberately reusing the same names (x, i) as fields, parameters, and loop variables. This is where scope rules actually matter - which variable does a bare name refer to when several are in play at once?
One honest note: "protected" isn't actually tested on the AP CSA exam (it only tests public/private) - it's included here as enrichment since you asked for it. Here, since nothing declares a package, protected behaves like same-file access, which is why main() can reach protected members directly but not private ones.
Every question below traces through this exact sequence, in this exact order. Keep this code visible while you work.
Out of every method you could write, there are only two that are actually special this year - Java treats them differently from every ordinary method you write:
Constructors - they share the class's exact name, and have no return type at all, not even void. They run automatically the instant you write new.
toString() - Java calls this one automatically whenever you try to print an object directly, like System.out.println(myDog);. Without it, Java falls back to a meaningless default that just prints something like Dog@1a2b3c.
Every other method you write - accessors, mutators, static methods, anything else - is just an ordinary method with an ordinary name you chose yourself.
Write your own class from scratch. Pick one of these, or a real-world idea of your own:
Your class needs, at minimum:
This page can only check that these pieces structurally appear to be present - it's not a compiler, so it can't verify your logic is actually correct. Mr. Wiessmann reads the real code for real credit, same as any FRQ.
Done for now? Check your work to see what's still missing and generate your certificate. You can check again anytime - only your best progress is kept.
This certifies that