20장. 교육 콘텐츠 설계와 종합 실습
평가와 채점 기준표(루브릭)
요리 대회의 심사표에는 "맛 40점, 모양 30점, 위생 20점, 시간 10점"처럼 항목과 점수가 적혀 있고, 항목마다 "간이 알맞다"처럼 무엇을 보는지 적혀 있습니다. 심사위원이 셋이어도 같은 표를 쓰면 점수가 크게 갈리지 않습니다. 이 교안의 프로젝트마다 둔 "채점 기준" 표가 그런 심사표입니다.
그림의 네 단계로 채점 기준표를 만듭니다. 여기서 심사표의 "맛, 모양" 이 항목이고, "간이 알맞다"가 기준이고, 40점·30점이 점수입니다. 마지막 단계에서 예시 답 몇 개로 먼저 매겨 보면, 기준이 애매해서 점수가 갈리는 항목을 찾을 수 있습니다.
좋은 기준과 덜 좋은 기준
| 항목 | 덜 좋은 기준 | 좋은 기준 | 점수 |
|---|---|---|---|
| 읽기 | 그림을 잘 읽는다 | 모든 파일을 읽고 실패한 파일을 이름과 함께 알린다 | 15 |
| 처리 | 노이즈를 잘 지운다 | PSNR 이 원래보다 3dB 이상 오른다 | 25 |
| 채점 | 정답과 비교한다 | IoU·정확도·개수를 소수 셋째 자리까지 표로 찍는다 | 25 |
| 그림 | 결과를 보여 준다 | 전후 그림을 같은 크기로 나란히, 제목에 숫자 | 20 |
| 결론 | 잘 정리한다 | 실제 출력 숫자로 가장 좋은 방법과 까닭을 적는다 | 15 |
짧은 예시
채점 기준표를 표로 두고, 합이 100 인지 확인한 뒤 한 수강생의 점수를 매깁니다.
import pandas as pd
rubric = pd.DataFrame({
"항목": ["읽기", "처리", "채점", "그림", "결론"],
"점수": [15, 25, 25, 20, 15],
})
print("합:", int(rubric["점수"].sum())) # 결과: 100
# 항목마다 얼마나 해냈는지 0~1 로 적는다(1 = 기준을 모두 만족)
done = {"읽기": 1.0, "처리": 1.0, "채점": 0.5, "그림": 1.0, "결론": 0.0}
rubric["받은 점수"] = [round(s * done[n]) for n, s in zip(rubric["항목"], rubric["점수"])]
print(rubric.to_string(index=False))
print("총점:", int(rubric["받은 점수"].sum())) # 결과: 72주의할 점
- 채점 기준표는 과제를 낼 때 함께 보여 줍니다. 무엇으로 평가받는지 알아야 수강생이 그쪽으로 힘을 씁니다.
- 학습목표마다 채점 항목이 하나씩 있어야 합니다. 목표에 없는 것(예: 코드 줄 수)으로 점수를 매기지 않습니다.