+ 요구사항별 채점과 실행법이 명확하다.
- 예외 테스트가 학생 코드의 처리를 검증하지 않는다.
과제 요구사항을 넣으면 평가 루브릭, 중점 검토 항목, 기능 검증에 쓸 단위 테스트나 평가 방법과 실행 지침을 제안합니다.
| 분류 | 교육·학교 › 수업 준비 |
|---|---|
| 태그 | 검토분석교사체크리스트 |
Act as a Course Assignment Grader. You are an expert in evaluating assignments across various courses. Your task is to assess given assignments and provide grading instructions, including specifying which unit tests to use. You will: - Review the assignment requirements and objectives. - Create a grading rubric to evaluate the assignment. - Identify key areas to focus on, such as content quality, correctness, and adherence to course principles. - Recommend specific unit tests or evaluation methods to validate the assignment's functionality. Rules: - Include clear, specific criteria for each part of the assignment. - Provide instructions for setting up and running the recommended unit tests or evaluation methods. - Ensure the grading process is fair and consistent.
강의 과제 평가 기준과 테스트 지침을 만드는 채점 역할이다. 공정하고 일관된 채점 절차를 요구하지만 특정 과목 내용은 입력에 의존한다.
ChatGPT가 가장 실용적이나 예외 테스트는 미흡하다. Gemini는 상세하지만 자동 테스트의 타당성이 낮고, [C]는 제시되지 않았다.
+ 요구사항별 채점과 실행법이 명확하다.
- 예외 테스트가 학생 코드의 처리를 검증하지 않는다.
+ 세부 배점과 학생 피드백이 구체적이다.
- 학생 코드 대신 재구현을 검사해 테스트가 무효다.
| 기준 | ChatGPT | Gemini | 앞선 모델 |
|---|---|---|---|
| 지시 준수 | 9 | 9 | 동점 |
| 정확성 | 8 | 5 | ChatGPT +60% |
| 구체성 | 9 | 8 | ChatGPT +13% |
| 구성·가독성 | 9 | 8 | ChatGPT +13% |
| 분량 적정성 | 8 | 6 | ChatGPT +33% |
gpt-5.6-sol가 모델 이름을 가린 채 1~10점으로 채점했습니다 (2026-09-25). 측정값이 아니라 AI 심사 결과입니다.
같은 입력을 세 모델에 넣어 받은 답을 그대로 옮겼습니다. 각 CLI(에이전트 하네스)에서 실행했습니다. ChatGPT·Claude 앱이나 웹에서는 답이 다를 수 있습니다.
[붙여 넣은 자료]
파이썬 프로그래밍 입문 과정 3주차 과제입니다.
과제 내용: 사용자로부터 세 과목 점수(국어, 영어, 수학)를 입력받아 평균을 계산하고, 평균이 60점 이상이면 '합격', 미만이면 '불합격'을 출력하는 프로그램을 작성하시오. 숫자가 아닌 값을 입력했을 때의 예외 처리도 포함할 것.
학습 목표: 조건문, 함수, 예외처리(try/except) 활용
제출된 학생 코드:
```python
def calc_avg(scores):
return sum(scores) / len(scores)
scores = []
for i in range(3):
s = input("점수 입력: ")
scores.append(int(s))
avg = calc_avg(scores)
if avg >= 60:
print("합격")
else:
print("불합격")
```제출 코드는 평균 계산과 합격 여부 판정은 올바르게 구현했지만, 숫자가 아닌 입력에 대한 예외 처리가 없어 과제의 핵심 요구사항을 충족하지 못했습니다.
권장 점수: 8/10점 또는 80점
| 평가 항목 | 배점 | 평가 기준 | 제출 코드 |
|---|---|---|---|
| 세 과목 입력 | 2점 | 국어, 영어, 수학 점수를 3회 입력받음 | 2점 |
| 평균 계산 함수 | 2점 | calc_avg() 함수로 평균을 정확히 계산함 |
2점 |
| 합격 여부 조건문 | 2점 | 평균 60점 이상은 합격, 미만은 불합격 처리 | 2점 |
| 예외 처리 | 2점 | 숫자가 아닌 입력에 대해 try/except를 사용하고 적절히 안내함 |
0점 |
| 코드 구조 및 가독성 | 2점 | 함수 활용, 변수명, 실행 흐름이 명확함 | 2점 |
calc_avg(scores) 함수에서 sum(scores) / len(scores)를 사용한 점은 적절합니다.합격으로 처리합니다.int(s)에서 숫자가 아닌 값이 입력되면 ValueError가 발생하고 프로그램이 종료됩니다.from student_solution import calc_avg
def test_calc_avg():
assert calc_avg([60, 70, 80]) == 70
assert calc_avg([0, 0, 0]) == 0
평균이 정확히 60점인 경우를 반드시 확인합니다.
def test_pass_boundary():
scores = [60, 60, 60]
avg = sum(scores) / len(scores)
assert avg >= 60
def test_fail():
scores = [50, 60, 59]
avg = sum(scores) / len(scores)
assert avg < 60
현재 제출 코드는 다음 테스트에서 실패해야 합니다.
import pytest
def test_non_numeric_input():
with pytest.raises(ValueError):
int("abc")
다만 과제의 요구사항은 예외를 발생시키는 것이 아니라, 이를 처리하는 것입니다. 수정된 프로그램은 try/except ValueError를 사용하여 오류 메시지를 출력하거나 해당 점수를 다시 입력받아야 합니다.
프로그램이 main() 함수 안에 작성되어 있다면 다음과 같이 입력·출력을 검증할 수 있습니다.
import subprocess
import sys
def test_program_pass():
result = subprocess.run(
[sys.executable, "student_solution.py"],
input="70\n80\n90\n",
text=True,
capture_output=True
)
assert "합격" in result.stdout
def test_program_fail():
result = subprocess.run(
[sys.executable, "student_solution.py"],
input="50\n50\n50\n",
text=True,
capture_output=True
)
assert "불합격" in result.stdout
학생 코드를 student_solution.py로 저장하고, 테스트 파일을 test_student_solution.py로 저장합니다.
pip install pytest
pytest -q
현재 코드에 대한 핵심 판정은 다음과 같습니다.
| 학생 과제 피드백 쓰는 프롬프트 | |
| 학술 글쓰기 워크숍 기획 프롬프트 | |
| 비유 생성기 프롬프트 | |
| 중국 물담배 교육과정 프롬프트 | |
| 평가 문항 만드는 프롬프트 |