Executive Overview & Difficulty Verdict
The 2024 AP Computer Science A FRQ paper follows the canonical 4-question, 36-mark blueprint. The global mean was 3.18, with FRQ question averages ranging from a high of 5.70/9 on Question 2 (Class Design) to a low of 3.20/9 on Question 4 (2D Array Pathfinding). Overall, the paper represents a moderate-to-challenging assessment, heavily weighting algorithmic control flow, robust edge-case handling, and multi-object coordination.
Where the Marks Are Won and Lost
- Question 1 (Methods & Control Structures - Feeder): Scored an average of 4.83/9. The most common mark drops came from generating random integers in the range \([10, 50]\) using (int)(Math.random() * 41) + 10 (only ~33% got this completely right) and failing to guard against currentFood going negative.
- Question 2 (Class Design - Scoreboard): The highest-scoring problem (5.70/9). Students excelled at method and class headers, but lost marks by failing to toggle the active team properly or declaring instance variables inside constructors/methods.
- Question 3 (Data Collections / ArrayList & String - WordChecker): Scored 4.33/9. A major stumbling block was searching for prefix occurrences without bounds checking when using substring, or misinterpreting indexOf(target) == 0.
- Question 4 (2D Arrays - GridPath): The toughest question (3.20/9). Implementing a non-traditional dynamic pathfinding traversal using a while loop proved difficult; only ~12.5% of students correctly formulated the loop condition and state-update logic without bounds violations or off-by-one fencepost errors.
Key Examiner Pitfalls to Avoid
Chief reader commentary highlights persistent errors: treating void methods as value-returning, comparing Strings with == instead of .equals(), confusing array notation [] with ArrayList .get(), and assuming out-of-bounds 2D array accesses return null rather than throwing an ArrayIndexOutOfBoundsException.
Strategic Revision & Predictions
Focus practice on non-standard loop structures (especially while-loop traversals over 2D grids), rigorous String parsing via indexOf, and probability scaling with Math.random().