Scoring Guidelines

Learn how to avoid penalties when answering a free-response question.

We'll cover the following

Scoring criteria

Apply the question scoring criteria first, which always takes precedence. Penalty points can only be deducted in a part of the question that has earned credit via the question rubric. No part of a question (a, b, c) may have a negative point total. A given penalty can be assessed only once for a question, even if it occurs multiple times or in multiple parts of that question. A maximum of 33 penalty points may be assessed per question.

1-point penalty

  • Array/collection access confusion ([] get)
  • Extraneous code that causes side-effect (e.g., printing to output, incorrect precondition check)
  • Local variables used but none declared
  • Destruction of persistent data (e.g., changing value referenced by parameter)
  • Void method or constructor that returns a value

No penalty

  • Extraneous code with no side-effect (e.g., valid precondition check, no-op)
  • Spelling/case discrepancies where there is no ambiguity*
  • Local variable not declared provided other variables are declared in some part
  • private or public qualifier on a local variable
  • Missing public qualifier on a class or constructor header
  • Keyword used as an identifier
  • Common mathematical symbols used for operators (× • ÷ < > <> ≠)
  • [] versus () versus <>
  • = instead of == and vice versa
  • The length/size confusion for array, String, List, or ArrayList; with or without ( )
  • Extraneous [] when referencing an entire array
  • [i,j] instead of [i][j]
  • Extraneous size in array declaration, e.g., int[size] nums = new int[size];
  • Missing ; where structure clearly conveys the intent
  • Missing { } where indentation clearly conveys the intent
  • Missing ( ) on parameter-less method or constructor invocations
  • Missing ( ) around if or while conditions

📌 Note: Spelling and case discrepancies for identifiers fall under the No penalty category only if the correction can be unambiguously inferred from the context, for example, ArayList instead of ArrayList.

As a counterexample, note that if the code declares int G = 99, g = 0;, then uses while (G < 10) instead of while (g < 10), the context does not allow for the reader to assume the use of the lower case variable.


Get hands-on with 1200+ tech skills courses.