AP CSA FRQ Guide

2025 FRQ 3: Round

Write a constructor and a method for a tournament round. The constructor builds a ranked competitor list from an array of names. The method creates match objects by pairing competitors from opposite ends of the ranked list, with a special case for an odd number of competitors.

ArrayList and Object Construction22 minute targetArrayListconstructorsobjectspairingindexing

Skills Tested

What this FRQ is really practicing

ArrayListconstructorsobjectspairingindexing

Treat these skills as the study checklist. If any tag feels shaky, review that topic before attempting the full written response.

Starter Approach

How to begin without copying a solution

  1. 1Part A: initialize competitorList, create one Competitor for each name, assign rank based on array position, and preserve order.
  2. 2Part B: create and return a new ArrayList<Match> by pairing front-ranked and back-ranked competitors.
  3. 3Handle the odd-size case by ignoring the best-ranked competitor before pairing the remaining competitors.

Write a first attempt before revealing any solution outline. Most AP CSA FRQ progress comes from tracing your own code and finding the missing case.

Common Mistakes

Mistakes to watch for while writing

Using rank i instead of i + 1 in the constructor.
Pairing adjacent competitors instead of pairing best with worst.
Forgetting to ignore the top-ranked competitor when the list size is odd.
Removing competitors from competitorList even though the postcondition says it is unchanged.
Returning competitorList instead of a new ArrayList<Match>.

Self Check

Review questions before you submit

Includes the Round constructor with a String[] parameter.

The constructor must be named Round and accept the names array.

Initializes competitorList as a new ArrayList.

The constructor should create the list before adding competitors.

Traverses the names array in order.

Use a loop from index 0 through names.length - 1.

Creates Competitor objects from the names.

Each name should become a new Competitor object.

Assigns ranks starting at 1, not 0.

The rank for names[i] should be i + 1.

Defines buildMatches with the correct return type.

The method should return an ArrayList of Match objects.

Creates a new ArrayList to return.

Do not modify competitorList; build a separate result list.

Accounts for an odd number of competitors.

Use size() % 2, or initialize the left index based on odd/even size.

Practice Links

Where to go next