2018 AP CSA Free Response Questions | All Solutions & Scoring
2018 AP CSA Free Response Questions
Classic Exam (Pre-2019 Format): The 2018 exam was the last before College Board standardized the 4-type format. FRQ 3 tested interface implementation with implements, which is no longer on the current curriculum. All other FRQs are directly applicable to today’s exam.
Complete Java solutions, scoring rubrics, common mistakes, and exam tips for every 2018 AP CSA FRQ. All question text verified from the official College Board PDF.
The 2018 AP CSA FRQs
The 2018 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.
FrogSimulation
Implement simulate() (loop hops until goal reached, negative position, or max hops exhausted) and runSimulations() (call simulate n times, return proportion of successes).
WordPairList
Build a WordPairList from a String array by constructing all consecutive WordPair objects, then count the number of matching pairs with numMatches().
CodeWordChecker
Implement the CodeWordChecker interface in two classes: one that checks minimum length, one that checks for excluded words, and both used together in a composite checker.
ArrayTester
Write getColumn() to extract a column from a 2D array, then use it in isLatin() to verify every row and column contains all values from the first row (Latin square check).
Quick Reference: All Four 2018 FRQs
| FRQ | Problem | Type | Difficulty | Key Skill |
|---|---|---|---|---|
| FRQ 1 | FrogSimulation | Methods | Medium | Loop with multiple exit conditions, proportion calculation |
| FRQ 2 | WordPairList | ArrayList | Medium | Constructing all consecutive pairs, counting matches |
| FRQ 3 | CodeWordChecker | Interface | Medium-Hard | Interface design, composite pattern, .contains() on ArrayList |
| FRQ 4 | ArrayTester | 2D Array | Hard | Column extraction, hasAllValues + containsDuplicates combination |
How Hard Were the 2018 AP CSA FRQs?
Overall: moderate. FRQ 1 (FrogSimulation) was accessible for students comfortable with multi-condition while loops. FRQ 2 (WordPairList) required constructing all consecutive pairs — the key insight was recognizing the nested structure and using the WordPair constructor correctly.
FRQ 3 (CodeWordChecker) tested interface implementation, which is no longer on the current exam but was fair for 2018 students. FRQ 4 (ArrayTester) was the most demanding: column extraction followed by a Latin square verification using two helper methods required precise coordination.
FRQ 1: FrogSimulation — Medium
Two methods: simulate() used a while loop with three exit conditions (goal reached, negative position, max hops). runSimulations() called simulate() n times and computed a proportion. Students who used a for loop often struggled with the multiple exit conditions.
FRQ 2: WordPairList — Medium
Constructor built an ArrayList of all consecutive WordPair objects from a String array. numMatches() counted pairs with equal words. The main trap: confusing the WordPair constructor arguments with indices, and using == instead of .equals() for comparison.
FRQ 3: CodeWordChecker — Medium-Hard
Interface implementation with two classes: one checking minimum length, one checking excluded-word membership. A composite checker combined both. This required clean class design and correct use of ArrayList.contains(). No longer tested on current exams.
FRQ 4: ArrayTester — Hard
getColumn() extracted a 1D array from a column of a 2D array. isLatin() used getColumn() plus hasAllValues() and containsDuplicates() to verify every row and column. Calling the methods in the wrong order or on the wrong input was the primary error source.
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 2018 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 2018 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 2018 AP CSA FRQs
What are the 2018 AP CSA FRQs?
FRQ 1 FrogSimulation (Methods & Loops), FRQ 2 WordPairList (ArrayList Construction), FRQ 3 CodeWordChecker (Interface Implementation), FRQ 4 ArrayTester (2D Array / Latin Square). Each worth 9 points for 36 total, comprising 50% of the exam score in 2018.
Which 2018 FRQ was the hardest?
FRQ 4 ArrayTester was the most challenging. getColumn() required careful row-by-row extraction, and isLatin() had to correctly call both hasAllValues() and containsDuplicates() on every row and every extracted column. Getting the logic direction right was the main failure point.
Does FRQ 3 CodeWordChecker still appear on current AP CSA exams?
No. The 2018 FRQ 3 tested interface implementation with implements, which is no longer part of the AP CSA curriculum as of the 2019 redesign. The current exam does not test interfaces, inheritance, or extends/implements. Skip this question type when using 2018 for current exam prep.
What is the most common mistake on 2018 FRQ 1 FrogSimulation?
Using a for loop instead of a while loop, which makes it hard to handle the multiple exit conditions. Also, forgetting to check for negative position as a separate stop condition, and off-by-one errors when counting the proportion in runSimulations().
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]