AP CSA 3.6 FRQ Practice: The Half Fix

Unit 3: Class Creation · Lesson 3.6 · FRQ Practice

The Half Fix

A free response question in the shape the exam uses: a stated contract, four rubric parts, and no main method handed to you. Worth 4 points.

Why this question is worth four points

When a method returns the object's own array, the caller can change the object from outside it, and nothing in the class can stop them. Students usually find half of this: they copy on the way OUT and not on the way IN, or the reverse. A half fixed class is what actually gets handed in, so that is what this question is built to detect.

What you are given

Nothing is given. Write a class named Roster. Do not write a main method.

The question

  1. (a) A constructor Roster(int[] scores) that stores a COPY of the array it is given.
  2. (b) public int[] getScores() returns a COPY of the stored array.
  3. (c) public int get(int index) returns the stored value at that index.
  4. (d) public int size() returns how many scores are stored.

What the reader is looking for

  1. Write class Roster with the constructor and methods described. No main method.
  2. Both directions need a copy. The driver changes the array it handed you AND changes the array you handed back, then asks what you have stored.
  3. Copy by looping and assigning element by element. A new array of the same length, filled in a loop, is all that is needed.

Worked examples

These show what a correct answer prints. There are more cases you cannot see, and they use different values, so an answer built around just these numbers will fail.

Example 1 input
4
10 20 30 40
99
Example 1 output
4
10
10
10
Example 2 input
2
5 6
77
Example 2 output
2
5
5
5

Your answer

Main.java

Input for the Run button

How this is scored: your answer runs against every test case, and the fraction it passes becomes your score out of 4. That is not how a human AP reader marks a rubric, so treat the score as a check on whether your code works, and the rubric above as the thing you are actually practising.


  

  

Stuck?

Hint 1

The driver pokes at the array it gave you, then pokes at the array you gave it, and asks for element 0 after each. Only a class that copied in BOTH directions gives the same answer all three times.

Hint 2

this.scores = scores; stores the caller's array itself, not a copy. Every later change they make is a change to your object.

Hint 3

A copy is a new array plus a loop. new int[scores.length] then assign each element across.

Before you submit

3 mistake(s) that lose points on this question

Each of these is a real error the grader catches. Check your answer against them before you submit, not instead of trying.

  • the constructor stores the caller array itself, so changing it changes the object
  • getScores hands out the object's own array, the half fix students actually write
  • size returns a fixed length rather than the array's

Where to go next

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.

Typically responds within 24 hours

Message Sent!

Thanks for reaching out. I'll get back to you within 24 hours.

🏫 Welcome, fellow educator!

I offer curriculum resources, practice materials, and study guides designed for AP CS teachers. Let me know what you're looking for — whether it's classroom materials, a guest speaker, or Teachers Pay Teachers resources.

Email

[email protected]

📚

Courses

AP CSA, CSP, & Cybersecurity

Response Time

Within 24 hours

Prefer email? Reach me directly at [email protected]