2017 AP CSA Free Response Questions | All Solutions & Scoring
2017 AP CSA Free Response Questions
Classic Exam (Pre-2019 Format): Pre-2019 classic format. All four FRQ types are applicable to today’s exam. No inheritance or interface questions — this year is clean for current exam prep.
Complete Java solutions, scoring rubrics, common mistakes, and exam tips for every 2017 AP CSA FRQ. All question text verified from the official College Board PDF.
The 2017 AP CSA FRQs
The 2017 exam used the classic multi-type FRQ format from before the 2019 standardization. These questions are excellent for building deep Java fundamentals even though some specific topics (such as interfaces with extends, GridWorld) no longer appear on the current exam.
Digits
Write the Digits class constructor (decompose an int into a digit ArrayList using % 10 and / 10) and isStrictlyIncreasing() (check consecutive ArrayList elements).
MultPractice
Write the MultPractice class that generates multiplication practice problems, tracks student answers, and determines correctness based on a given number of misses allowed.
Phrase
Implement findNthOccurrence() (find the nth occurrence of a substring) and replaceNthOccurrence() (replace it), then use both to implement findLastOccurrence().
Position
Write findPosition() to search a 2D String array for a target and return its Position, then allPositions() to return an ArrayList of all positions where the target appears.
Quick Reference: All Four 2017 FRQs
| FRQ | Problem | Type | Difficulty | Key Skill |
|---|---|---|---|---|
| FRQ 1 | Digits | Class | Medium | Digit extraction loop, strictly increasing check |
| FRQ 2 | MultPractice | Class | Medium | State fields, tracking correct/incorrect counts |
| FRQ 3 | Phrase | String | Medium-Hard | indexOf() with fromIndex, method chaining |
| FRQ 4 | Position | 2D Array | Hard | Row/column search, returning Position objects, collecting all matches |
How Hard Were the 2017 AP CSA FRQs?
Overall: moderate to hard. FRQ 1 (Digits) had a non-obvious digit extraction technique — the % 10 / / 10 loop — that produced digits in reverse order, requiring index-0 insertion or a reversal step. Students who built the ArrayList front-to-back without correction received wrong output.
FRQ 2 (MultPractice) required careful state tracking across multiple method calls. FRQ 3 (Phrase) tested compound String manipulation — finding the nth occurrence required a loop with a running indexOf() call that advanced the fromIndex parameter. FRQ 4 (Position) was a full 2D array search problem that required returning objects on match and collecting all matches into a list.
FRQ 1: Digits — Medium
Constructor decomposed an int using % 10 / / 10. Digits were added in reverse order, requiring add(0, digit) to prepend. isStrictlyIncreasing() compared consecutive pairs. Students who appended digits without reversing got wrong output for multi-digit numbers.
FRQ 2: MultPractice — Medium
Class with fields tracking the number value, number of misses allowed, and current miss count. The constructor and answer-checking methods required coordinated state management. Well-prepared students found this manageable; others lost points on missed state transitions.
FRQ 3: Phrase — Medium-Hard
findNthOccurrence() looped n times, advancing indexOf()'s start position each iteration. replaceNthOccurrence() used findNthOccurrence() to locate and replace. findLastOccurrence() composed both. The cascading method dependency meant early errors compounded.
FRQ 4: Position — Hard
findPosition() searched a 2D array and returned a Position object on first match (null if not found). allPositions() collected every matching Position into an ArrayList. The two-method structure required understanding Position construction and null return conventions.
Classic vs. Current Exam Format
Beginning with the 2019 exam, College Board standardized the AP CSA FRQ format to four consistent question types in the same order every year (Methods, Class Writing, ArrayList, 2D Array). The 2017 exam pre-dates this standardization, meaning question types varied more widely. Key differences from the current exam:
What Still Applies Today
All core Java skills are directly transferable: loops, conditionals, arrays, ArrayList, String methods, class design, 2D array traversal. The algorithmic patterns from 2017 appear on every modern exam.
What No Longer Appears
Interfaces with implements/extends, inheritance hierarchies, super() calls, and (in 2014) the GridWorld case study have all been removed from the AP CSA curriculum. Skip those parts when studying from this year.
How to Use This Page
For best results: attempt each FRQ yourself first (set a 22-minute timer), then check the solution page. Focus on the algorithmic core — loop patterns, array traversal, class structure — and skip any parts involving inheritance or interfaces, as these are no longer tested on current exams.
- Click any FRQ card above to open the full solution page (some solutions are still being built — check the official PDF linked above for full question text).
- Use the FRQs by Topic page to find more practice on any specific concept.
- See all years at the FRQ Archive.
Frequently Asked Questions About the 2017 AP CSA FRQs
What are the 2017 AP CSA FRQs?
FRQ 1 Digits (Class with digit decomposition), FRQ 2 MultPractice (Class design), FRQ 3 Phrase (String manipulation), FRQ 4 Position (2D Array search). Each worth 9 points for 36 total, 50% of the exam score.
What was the hardest 2017 FRQ?
FRQ 4 Position was the most challenging. findPosition() required a nested loop search that returned a Position object on first match, and allPositions() needed to collect every matching position into an ArrayList. Managing the Position constructor and null return on no-match were common error points.
What is the key trick in 2017 FRQ 1 Digits?
The digit extraction loop uses % 10 to get the last digit and / 10 to remove it, building the ArrayList from least-significant to most-significant digit. The digits end up in reverse order, so they must be inserted at index 0 (or the list reversed) to match the original number order.
How does 2017 compare in difficulty to the current exam format?
The 2017 exam was moderate overall. The algorithmic patterns are directly relevant today: digit decomposition, String manipulation, 2D array traversal, and class design all appear on current exams. FRQ 2 MultPractice had more state-tracking complexity than typical modern FRQ 2s.
Get in Touch
Whether you're a student, parent, or teacher — I'd love to hear from you.
Just want free AP CS resources?
Enter your email below and check the subscribe box — no message needed. Students get daily practice questions and study tips. Teachers get curriculum resources and teaching strategies.
Message Sent!
Thanks for reaching out. I'll get back to you within 24 hours.
Prefer email? Reach me directly at [email protected]