AP CSA 3.2 FRQ Practice: Changing the Rule in One Place

Unit 3: Class Creation · Lesson 3.2 · FRQ Practice

Changing the Rule in One Place

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

A design is good when a rule change touches one method. This class applies the same threshold in three places, and the question is written so that a student who copies the comparison three times still passes the visible cases and fails the hidden one where the threshold is different.

What you are given

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

The question

  1. (a) A constructor Grader(int threshold) that remembers the passing threshold.
  2. (b) public boolean passes(int score) returns whether score is at least the threshold.
  3. (c) public String label(int score) returns "PASS" or "FAIL", decided by part (b).
  4. (d) public int countPassing(int a, int b, int c) returns how many of the three scores pass, decided by part (b).

What the reader is looking for

  1. Write class Grader with the constructor and methods described. No main method.
  2. Parts (c) and (d) must call part (b). The threshold comparison is written ONCE, in passes.
  3. "At least" includes the threshold itself.

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
60 75 55 90
Example 1 output
true
FAIL
2
1
Example 2 input
70 70 69 71
Example 2 output
true
FAIL
2
0

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 builds a SECOND Grader with a different threshold and asks it the same question. A comparison hardcoded to 60 passes the first object and fails the second.

Hint 2

this.threshold = threshold; is how a constructor parameter and a field with the same name are told apart. Writing threshold = threshold; assigns the parameter to itself and leaves the field at 0.

Hint 3

countPassing is three calls to passes. Repeating the comparison inside it is the design mistake the second Grader is there to catch.

Before you submit

4 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 assigns the parameter to itself, leaving the field at 0
  • countPassing hardcodes the threshold instead of calling passes
  • passes excludes the threshold itself
  • label returns the two verdicts the wrong way round

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]