📝 AP CS A FRQ Task Verbs (정연이용 · D-13 정독)

FRQ Task Verbs — 정확한 의미 + 점수 받는 답안 vs 감점 답안

College Board CED V.1 (Effective Fall 2025) p.148 원문 + AP CSA 채점기준에서 점수 받는 답안 vs 감점 답안 예시

⚠️ 핵심 원칙: AP CSA FRQ에서 점수는 "task verb를 정확히 수행했는가"로 결정됩니다. 특히 Implement/Write는 처음부터 모든 코드를 작성, Complete는 주어진 빈칸만 채움 — 둘 다 컴파일 가능한 정확한 Java syntax 필수. Assume 조건은 의심 금지 (검증 코드 작성 = 시간 낭비).

🧪 시험 구조 — 2026 AP CSA Exam (CED V.1 Effective Fall 2025, p. 148)

📊 CED Practice·Unit별 출제 비율 (시험 가중치)

College Board AP CSA CED V.1 (Effective Fall 2025) 표기.

🛠️ Practices (시험 비중)

Practice 1: Design Code2–10%
Practice 2: Develop Code (FRQ 4문항 모두)22–38%
Practice 3: Analyze Code (MCQ 최다)37–53%
Practice 4: Document Code · Computing Systems10–15%
Practice 5: Use Computers Responsibly2–10%

📚 Units (시험 비중)

Unit 1: Using Objects and Methods15–25%
Unit 2: Selection and Iteration25–35%
Unit 3: Class Creation10–18%
Unit 4: Data Collections30–40%
Implement / Write CED 공식 · FRQ 4문항 모두 등장 "Write the method" "Write the class"

📖 College Board 공식 정의

CED 원문 (V.1, p.148)
"Implement / Write: Express in print form the proper syntax to represent a described algorithm or program."
"구현·작성. 기술된 알고리즘 또는 프로그램을 표현하기 위한 적절한 syntax(문법)를 인쇄(글) 형태로 표현한다."

🎯 점수 받는 핵심

  • 처음부터 끝까지 정확한 Java 코드 — class header, instance vars, constructor, method 모두 작성
  • 컴파일 가능한 syntax 필수: public/private, return type, parameter type, ;, { }
  • pseudo-code, 한국어 주석, "여기에 작성" placeholder는 0점
  • Quick Reference에 있는 메서드(length(), substring(), ArrayList.get() 등)는 정확한 시그니처 사용
  • Q2 Class Design은 전체 클래스 골격까지 — class header부터 마지막 }까지
✓ 점수 받는 답 (Q1 Method)

문제: "Write the method countEvens that returns the number of even integers in the array."

public int countEvens(int[] arr) {
    int count = 0;
    for (int i = 0; i < arr.length; i++) {
        if (arr[i] % 2 == 0) {
            count++;
        }
    }
    return count;
}

public + return type + 정확한 parameter + return + ; 모두 ✓

✗ 0점되는 답안
// 배열을 돌면서 짝수 개수 세기
// for 문 사용해서 count++ 하기
// return count;

한국어 주석 + pseudo-code = 0점. CED: "express in print form the proper syntax" 위반.

int countEvens(arr) {
    for i in arr:
        if i % 2 == 0: count = count + 1
    return count
}

Python syntax 혼용 + public 누락 + parameter type 누락 → 0점.

⚠️ 한국 학생 빈출 감점 Top 5return 누락 — return type이 void가 아닌데 return 없음 → 컴파일 안 됨 → -1~-2점
public/private 키워드 누락 — Q2 Class Design에서 instance var는 private, 메서드는 public이 관례 → 누락 시 -1점
; 누락 — 한 줄에 하나라도 빠지면 syntax error → 채점관에 따라 -1점
변수명 ↔ parameter명 불일치 — 문제에서 arr이라 했는데 array로 쓰면 -1점 (선언과 본문 일관성)
Java syntax errorarr.length() (X, 배열은 .length) / str.length (X, String은 .length()) / list.size (X, ArrayList는 .size())
Complete (program code) CED 공식 · 빈칸만 채우기 "Complete the method" "Complete the implementation"

📖 College Board 공식 정의

CED 원문 (V.1, p.148)
"Complete (program code): Express in print form the proper syntax to represent a described algorithm or program given part of the code."
"(프로그램 코드를) 완성. 코드의 일부가 주어진 상태에서 기술된 알고리즘 또는 프로그램을 표현하기 위한 적절한 syntax를 인쇄 형태로 표현한다."

🎯 점수 받는 핵심

  • 주어진 코드는 그대로 두기 — 변수명, 헬퍼 메서드명, parameter 그대로 사용
  • 빈칸(/* missing code */)만 정확히 채우기
  • 주어진 헬퍼 메서드(예: isValid(), helper())가 있으면 반드시 호출 — 안 쓰면 감점 위험
  • 새 import, 새 변수 선언은 가능하되 주어진 변수와 충돌 X
  • Implement/Write와 차이: 완성형은 partial — 골격은 받았다
✓ 점수 받는 답

문제: "Complete the method removeNegatives. Use the helper isNegative(int) already provided."

public void removeNegatives(ArrayList<Integer> nums) {
    /* given: method header above */
    for (int i = nums.size() - 1; i >= 0; i--) {
        if (isNegative(nums.get(i))) {
            nums.remove(i);
        }
    }
}

→ 주어진 헬퍼 isNegative 호출 ✓ 메서드 시그니처 변경 X ✓ 변수명 nums 그대로 ✓

✗ 감점되는 답안
public void removeNegatives(ArrayList<Integer> list) {
    for (int i = 0; i < list.size(); i++) {
        if (list.get(i) < 0) {
            list.remove(i);
        }
    }
}

주어진 변수명 numslist로 변경 (감점) + 주어진 헬퍼 isNegative 무시 (감점) + 정방향 + remove → 인덱스 건너뛰기 버그 (-1~-2점)

⚠️ 빈출 감점 "given part of the code"를 무시하고 처음부터 다시 작성 — 시간도 낭비, 시그니처가 어긋나면 컴파일 X. 주어진 헬퍼 메서드를 안 쓰는 것도 빈출 감점 (특히 Q3 ArrayList 문제). 빈칸 외 부분은 건드리지 말 것.
Assume CED 공식 · 의심 금지 "Assume that..." "You may assume..."

📖 College Board 공식 정의

CED 원문 (V.1, p.148)
"Assume: Suppose to be the case without any proof or need to further address the condition."
"가정. 증명 없이, 조건을 추가로 다룰 필요 없이 그렇다고 받아들인다."

🎯 점수 받는 핵심

  • "Assume X"가 보이면 X를 그대로 받아들이기 — 검증 코드 작성 X
  • 예: "Assume that arr.length > 0" → if (arr.length == 0) return ...; 같은 분기 추가하지 않음
  • 예: "Assume values are positive" → 음수 체크 코드 안 씀
  • Assume 조건을 의심하면 시간 낭비 + 코드 길이만 늘어남 (점수 안 줌)
  • 예외: "Assume" 조건과 모순되는 입력이 들어오면 동작 안 보장 — 그건 채점 대상 아님
✓ 점수 받는 답

문제: "Write a method average that returns the average. Assume that arr.length > 0."

public double average(int[] arr) {
    int sum = 0;
    for (int v : arr) sum += v;
    return (double) sum / arr.length;
}

→ Assume 조건 신뢰. arr.length == 0 체크 없이 바로 나눗셈. 만점.

✗ 시간 낭비 (감점은 아니나 비효율)
public double average(int[] arr) {
    if (arr == null || arr.length == 0) {
        return 0;     // Assume 무시한 불필요한 분기
    }
    int sum = 0;
    for (int v : arr) sum += v;
    return (double) sum / arr.length;
}

→ 점수는 같지만 2~3분 시간 낭비. Q1당 22.5분 룰에 치명적. 게다가 "return 0"이 잘못된 명세가 되어 감점 가능.

⚠️ 빈출 함정 "Assume that the parameter is not null" → null 체크 코드 작성하면 시간만 낭비. "Assume that row and col are valid indices" → 범위 체크 코드 추가하면 코드만 길어짐. Assume 조건을 의심하지 말고 그대로 사용하는 것이 시간을 아끼는 길.
Override Q2 Class Design 빈출 "Override the method" "in the subclass"

📖 정의 (CED 비공식 · 실제 FRQ 출제 동사)

실무 정의 (CSA Q2 Class Design 단골)
"Override: Provide a new implementation of a method already defined in the superclass, using the same method signature (return type, name, parameters)."
"오버라이드(재정의). 상위 클래스에 이미 정의된 메서드를 같은 메서드 시그니처(return type, name, parameters)로 새롭게 구현한다."

🎯 점수 받는 핵심

  • 동일 시그니처: return type 동일, 메서드명 동일, parameter 개수·타입·순서 동일
  • 본문(body)만 변경, 시그니처 변경 시 → overload (override 아님) → 0점
  • @Override 어노테이션은 선택 (안 써도 감점 X, 쓰면 가독성 ↑)
  • 필요하면 super.methodName(...) 으로 superclass 동작 호출 가능 (특히 toString, 생성자)
  • private 메서드는 override 불가, final 메서드도 override 불가
✓ 점수 받는 Override

문제: "The class Dog extends Animal. Override makeSound to return "Woof"."

public class Dog extends Animal {
    @Override
    public String makeSound() {
        return "Woof";
    }
}

→ 동일 시그니처 (public String makeSound()) ✓ 본문만 변경 ✓

✗ Overload (Override 아님 → 0점)
public class Dog extends Animal {
    public String makeSound(String mood) {
        return "Woof";
    }
}

parameter (String mood) 추가 → overload. superclass의 makeSound()는 그대로 살아있음 → override 효과 없음 → 0점.

public void makeSound() {
    System.out.println("Woof");
}

return type Stringvoid 변경 → 컴파일 에러 → 0점.

⚠️ 빈출 감점toString() override 시 super.toString() 호출 누락 — superclass 정보를 포함해야 하는 경우 return super.toString() + " " + breed; 형태 필요. ② 생성자에서 super(...) 호출 누락 — superclass에 default 생성자가 없으면 컴파일 에러. ③ Override 한다고 했으면 superclass에 그 메서드가 있어야 함 — 없으면 그냥 새 메서드일 뿐.
Trace MCQ 빈출 · FRQ 드묾 "What is printed?" "What does the code do?"

📖 정의 (Practice 3: Analyze Code)

실무 정의 (CSA MCQ 최다 비중)
"Trace: Follow the execution of code line by line, tracking how variable values, object states, and control flow change."
"추적. 코드의 실행을 한 줄씩 따라가며, 변수 값·객체 상태·제어 흐름의 변화를 추적한다."

🎯 점수 받는 핵심

  • 변수 변화 표를 단계별로 작성 — i | x | result 식으로
  • 각 반복마다 조건문 평가 결과 (true/false) 명시
  • pre/post increment 차이: ++i는 먼저 증가 후 사용, i++은 사용 후 증가
  • short-circuit 평가: &&는 왼쪽이 false면 오른쪽 평가 X, ||는 왼쪽이 true면 오른쪽 평가 X
  • integer 나눗셈: 5 / 2 = 2 (정수), 5.0 / 2 = 2.5
  • 객체 reference: obj1 = obj2;은 같은 객체 가리킴 — 한 쪽 변경 = 둘 다 반영
✓ 단계별 추적
int x = 5;
int y = x++ + ++x;
System.out.println(x + " " + y);

추적표:

step 1: x++ 평가 → x 값 5 사용, x = 6
step 2: ++x 평가 → x = 7, 값 7 사용
step 3: y = 5 + 7 = 12
step 4: x = 7, y = 12
출력: "7 12"

→ 정확한 단계별 추적. 정답.

✗ 결과만 추측 (오답)
"x = 6, y = 11" 또는 "그냥 12 12"

pre/post increment를 같은 것으로 처리한 빈출 오답. x++은 5를 반환 후 6, ++x는 7로 만든 후 7 반환.

⚠️ Trace 함정 Top 4pre/post increment: i++ vs ++i
short-circuit: (arr != null && arr.length > 0)에서 arr == null이면 오른쪽은 평가 안 됨 (NullPointerException 회피)
integer overflow: int.MAX_VALUE + 1 = 음수 (rare, but happens)
String 비교: str1 == str2 (X, reference 비교) vs str1.equals(str2) (O, 값 비교)
Identify 단답 + 한 줄 이유 "Identify the bug" "Identify the line"

📖 정의 (Practice 3·4 평가)

실무 정의 (CSA에서는 코드 분석에 사용)
"Identify: Indicate or provide information about a specified element, line of code, bug, or computational result without elaboration or explanation."
"식별. 지정된 요소·코드 라인·버그·계산 결과에 대한 정보를 설명이나 부연 없이 제시한다."

🎯 점수 받는 핵심

  • 정확한 라인 / 정확한 변수명 / 정확한 값을 한 단어 또는 한 줄로 지목
  • "Identify the bug"는 버그 위치 + 한 줄 이유까지가 안전
  • 여러 요소 지목 → 부분점 안 줄 수 있음 (정확한 하나로 압축)
  • 모호한 표현 ("코드 잘못됨", "여기쯤") → 0점
✓ 정확한 지목

문제: "Identify the line that contains the bug."

"Line 4: if (i < arr.length) {
should be if (i <= arr.length - 1)
or equivalently arr.length should be arr.size() if it's an ArrayList."

→ 정확한 라인 + 한 줄 이유. 1점.

✗ 모호한 지목
"코드에 버그가 있어요. 반복문 부분이 잘못된 것 같아요."

→ 라인 번호 X, 정확한 요소 X. 0점.

"Line 3, Line 4, Line 7 모두 의심됨"

여러 요소 나열 → 부분점 안 줄 수 있음. 가장 확실한 하나만.

⚠️ 빈출 감점 "Identify the data type" — int인지 Integer인지 정확히. ArrayList의 element는 Integer (wrapper class), 배열의 element는 int (primitive). ArrayList<Integer>int 넣어도 autoboxing 되지만, identify 답안에서는 Integer로 답해야 정확.
Determine 결과 + 도출 과정 "Determine the output" "Determine the value"

📖 정의 (CSA에서 출력·반환값 판정)

실무 정의 (Practice 3: Analyze Code)
"Determine: Apply the rules of Java semantics to identify the value, output, or result produced by executing the given code."
"결정·판정. Java 의미론(semantics) 규칙을 적용하여, 주어진 코드 실행이 만들어내는 값·출력·결과를 식별한다."

🎯 점수 받는 핵심

  • 정확한 결과(값·출력) + 도출 과정 1줄 — 결과만 쓰면 부분점 못 받음
  • 출력은 정확한 형태로: 줄바꿈(println), 공백, 따옴표 X
  • "Determine the value of x" → 마지막 시점의 x
  • "Determine the output" → console에 찍히는 그대로 (따옴표 없이)
  • integer 나눗셈, 논리 평가, 객체 reference 변화 모두 반영
✓ 도출 과정 포함
int a = 7, b = 2;
System.out.println(a / b);
System.out.println((double) a / b);

답:

줄 1: a / b = 7 / 2 = 3 (integer division)
줄 2: (double) a / b = 7.0 / 2 = 3.5

출력:
3
3.5

→ 도출 과정 + 정확한 출력. 만점.

✗ 결과만 (감점)
"3
3.5"

→ 정답이지만 도출 과정 없음 → 부분점만. 특히 부분 정답일 경우 어디서 틀렸는지 채점관이 알 수 없어 감점.

"3.5
3.5"

integer division 무시. 한국 학생 빈출 오답.

⚠️ 빈출 감점 출력 형태 오류: println("Hello")Hello (따옴표 없이) + 줄바꿈. print("Hello")Hello (줄바꿈 없이). println("Hello, " + name) 처럼 + 연산자 → String 결합. 한국 학생들이 답안에 따옴표를 그대로 쓰는 실수가 빈번.
Show 작동하는 코드 + 결과 "Show how..." "Show the output"

📖 정의 (CSA Q1·Q2 부분문제 단골)

실무 정의 (CSA에서 구체화·시연 동사)
"Show: Provide working code or a concrete example/output that demonstrates the intended behavior or result."
"보이기. 의도한 동작이나 결과를 시연하는 작동하는 코드 또는 구체적인 예시·출력을 제시한다."

🎯 점수 받는 핵심

  • 실제 작동하는 Java 코드 또는 구체적인 출력 결과
  • pseudo-code, 영어 설명, 다이어그램만으로는 0점
  • "Show how to call the method" → 실제 호출 코드 (Dog d = new Dog(); d.makeSound();)
  • "Show the contents of the array" → 배열 내용 ({1, 3, 5, 7} 식으로)
  • 예시(example)면 전체 흐름을 보일 것 — 한 단계만 보이면 부족
✓ 작동하는 코드 + 출력

문제: "Show how to create a Dog object and print its sound."

Dog myDog = new Dog("Buddy", 3);
System.out.println(myDog.makeSound());

// 출력: Woof

→ 객체 생성 + 메서드 호출 + 출력 명시. 만점.

✗ 설명만 (0점)
"Dog 객체를 만들고 makeSound 메서드를 호출하면 Woof가 출력됩니다."

코드 0줄 → 0점. "Show"는 코드 또는 구체적 결과 필수.

⚠️ 빈출 감점 "Show the contents of the 2D array after the method runs" — 표로 그릴 때 row/column 순서 헷갈림. arr[0][0]가 좌상단, arr[row][col]에서 row가 먼저. { {1,2}, {3,4} }2 rows × 2 cols. 한국 학생들은 transpose 실수가 자주 발생.

📋 8개 Task Verb 요약 카드 (시험 직전 1분 정독)

Task VerbCED?핵심 행동0점되는 실수
Implement / Write ✓ CED 공식 처음부터 끝까지 정확한 Java syntax pseudo-code, 한국어 주석 → 0점
Complete (program code) ✓ CED 공식 빈칸만 채우고 주변 그대로 주어진 헬퍼·변수명 무시 → 감점
Assume ✓ CED 공식 조건 그대로 받아들이기 (검증 X) 의심해서 if 분기 추가 → 시간 낭비
Override FRQ 빈출 (Q2) 동일 시그니처 + 본문만 변경 parameter·return type 변경 → overload (0점)
Trace MCQ 최다 변수 변화 표, 단계별 pre/post increment, short-circuit, integer division
Identify FRQ + MCQ 정확한 라인·요소 + 한 줄 이유 여러 요소 나열, 모호한 표현
Determine MCQ 최다 결과 + 도출 과정 1줄 결과만 / integer division 무시
Show FRQ 부분 작동하는 코드 + 결과 명시 설명만 (코드 0줄) → 0점

📊 CED FRQ별 Task Verb 출제 빈도

문항점수·시간주 출제 동사가끔 등장
Q1 Methods / Control Structures 7점 / 22.5분 Implement, Complete Show (호출 예시), Assume
Q2 Class Design 7점 / 22.5분 Write, Implement Override (자주), Complete, Show
Q3 Data Analysis (ArrayList) 5점 / 22.5분 Write, Complete Assume (조건 단순화)
Q4 2D Array 6점 / 22.5분 Write, Implement Show (배열 내용), Assume
MCQ Section I 40문항 / 90분 Trace, Identify, Determine (코드 작성 동사는 거의 X)
🎯 시험 답안 작성 30초 체크리스트:
Task verb 동그라미 치고 시작 (Implement? Complete? Override?)
② Task verb별 행동 매칭 — Implement는 처음부터 정확한 Java, Complete는 빈칸만, Assume은 그대로 받아들이기, Override는 동일 시그니처
"public + return type + ;" 마지막 확인
④ Q1~Q4 답안: 한국어 주석 / pseudo-code 일체 금지 — 컴파일 가능한 Java만
⑤ 시간 분배: 22.5분/문항 — 한 문제에 25분 넘으면 다음으로 넘어가기

🥇 한국 학생 CSA FRQ 빈출 감점 Top 8

#실수잘못된 예옳은 형태
1 한국어 주석으로 답안 대체 // 짝수만 세기 실제 Java 코드 작성 (if (x % 2 == 0) count++;)
2 배열 vs String vs ArrayList 길이 혼동 arr.length() / str.length / list.size arr.length / str.length() / list.size()
3 return 누락 public int foo() { ... } (return 없음) return result; 명시
4 ; 누락 / 괄호 짝 안 맞음 int x = 5 (세미콜론 X) int x = 5;
5 Override를 overload로 작성 parameter 추가 / return type 변경 동일 시그니처 + 본문만 변경
6 Assume 무시 (불필요한 검증) if (arr == null) return 0; Assume 조건 신뢰, 분기 생략
7 integer division 무시 5 / 2 == 2.5 (X) 5 / 2 == 2 · (double) 5 / 2 == 2.5
8 String 비교 == 사용 if (s1 == s2) (reference) if (s1.equals(s2)) (값 비교)
📚 추가 한국 학생 함정:
접근 제어자 누락public(메서드) / private(instance var)이 관례, 누락 시 default 접근 → -1점
autoboxing 신뢰ArrayList<Integer>int 넣어도 작동하지만, identify 답안에서는 Integer가 정확
ArrayList remove 시 인덱스 건너뛰기 — 정방향 + remove → 다음 element 누락. 역방향 루프 (for (int i = list.size()-1; i >= 0; i--)) 사용
2D 배열 row/col 순서arr[row][col], row가 먼저. transpose 실수 빈번

🔗 같이 보면 좋은 자료 (D-13 정독 순서 추천)

순서자료용도
1 📝 Task Verbs (지금 이 자료) FRQ 답안 형태 — 30분 정독
2 💻 AP CSA 치트시트 Java 문법·Quick Reference 1쪽 압축본 — 20분
3 📊 FRQ 채점 가이드 실제 rubric 분석 (Q1~Q4) — 30분
4 📅 D-13 학습 계획 13일 일별 학습 로드맵