코딩 시험 결과를 교육과정 단위의 진단으로 바꾸는 방법
"코딩 시험은 점수만 남을 뿐, 학생이 무엇을 이해하지 못했는지 파악하기 어렵다.
본 서비스는 NCIC 정보과 성취기준을 AI 문제 생성 기준으로 활용해 채점 결과를 학습 진단으로 전환한다.
이를 통해 표준화된 교육과정이 부족한 인도 7만여 코칭센터에 진단 체계를 제공하는 것을 목표로 한다."
아이디어의 요약입니다. 이 기획에서 가장 중요한 문장은 “AI로 문제를 생성한다”가 아니라 “채점 결과를 학습 진단으로 전환한다”입니다.
80점은 정확하지만, 충분하지 않습니다
학생 두 명이 같은 코딩 시험에서 똑같이 80점을 받았다고 가정해 보겠습니다.
한 학생은 반복문 안에서 조건이 어떻게 작동하는지 이해하지 못했습니다. 다른 학생은 프로그램의 오류를 추적하고 수정하는 과정에서 막혔습니다. 성적표에는 두 학생 모두 80점이라고 적힙니다. 하지만 다음 수업에서 두 학생에게 필요한 설명과 연습은 전혀 다릅니다.
점수는 학생이 얼마나 맞혔는지는 알려줍니다. 그러나 학생이 무엇을 이해하지 못했는지, 그래서 다음에 무엇을 가르쳐야 하는지까지는 알려주지 않습니다.
코딩 시험에서는 이 문제가 더 선명하게 드러납니다. 자동 채점 시스템은 테스트 케이스 10개 중 몇 개를 통과했는지 정확하게 계산할 수 있습니다. 하지만 실패한 이유가 배열의 경계를 잘못 처리했기 때문인지, 중첩 조건의 실행 순서를 이해하지 못했기 때문인지, 함수를 적절히 분리하지 못했기 때문인지는 별도의 해석이 필요합니다.
채점은 코드의 결과를 판정하지만, 교육은 그 결과가 발생한 이유를 찾아야 합니다.
제8회 교육 공공데이터 AI 활용대회를 준비하며 제가 붙잡은 문제는 바로 이 간극이었습니다.
처음부터 “AI로 코딩 문제를 만들어야겠다”라고 생각한 것은 아닙니다. 오히려 반대였습니다. 생성형 AI에게 파이썬 반복문 문제 10개를 요청하는 일은 이미 어렵지 않습니다. 문제는 그렇게 만들어진 10개의 문항이 각각 무엇을 평가하는지, 학생이 틀렸을 때 어떤 학습 결손으로 해석해야 하는지, 그 결과가 다음 수업을 어떻게 바꿔야 하는지가 정의되어 있지 않다는 점이었습니다.
문제의 수가 늘어난다고 진단의 품질이 높아지는 것은 아닙니다.
기준이 없는 문제 생성은 출제 노동만 자동화할 뿐입니다.
제가 바꾸고 싶었던 것은 ‘점수’가 아니라 시험이 남기는 데이터의 단위였습니다
일반적인 시험 데이터는 다음과 같이 남습니다.
학생 A
총점: 80점
오답: 3번, 7번
이 데이터는 채점 결과로는 충분합니다. 그러나 수업을 설계하기 위한 데이터로는 부족합니다. 3번과 7번이 어떤 개념을 측정했는지 연결되어 있지 않기 때문입니다.
제가 만들고 싶었던 결과는 다음과 같았습니다.
학생 A
총점: 80점
[9정03-06] 논리 연산과 중첩 제어 구조
- 관련 문항 4개 중 2개 정답
- 조건이 중첩될 때 실행 순서를 추적하는 문항에서 반복적으로 오답
[9정03-07] 함수와 디버거를 활용한 오류 수정
- 관련 문항 3개 중 3개 정답
- 오류 위치를 찾고 수정하는 과제는 안정적으로 수행
두 결과는 같은 시험에서 나올 수 있습니다. 하지만 두 번째 결과만이 “다음 수업에서 무엇을 해야 하는가”라는 질문에 답할 수 있습니다.
핵심은 문항에 정답만 붙이는 것이 아닙니다. 각 문항에 이 문항이 어떤 학습 목표에 대한 증거인지를 함께 기록하는 것입니다.
이를 위해 필요한 구조는 단순합니다.
교육과정
→ 성취기준
→ 평가 요소
→ 문항
→ 학생 응답
→ 성취기준별 근거
→ 보충 학습과 다음 수업
시험 결과가 이 구조를 따라 축적되면 3번을 틀렸다는 사실을 중첩 제어 구조를 해석하는 데 어려움이 있다는 교육적 정보로 바꿀 수 있습니다.
성취기준은 학생의 오답을 해석하기 위한 공통 언어였습니다
여기에서 NCIC 국가교육과정정보센터의 데이터가 필요했습니다.
NCIC는 우리나라와 세계의 교육과정 원문을 제공하고, 방대한 교육과정 정보를 디지털로 구조화해 탐색할 수 있도록 지원하고 있으며, 학생평가지원포털에서는 학교급과 교육과정에 따른 성취기준·평가기준을 검색하고 평가도구와 결과 활용 자료까지 확인할 수 있습니다.
성취기준은 단순한 단원명이 아닙니다.
반복문, 함수, 리스트처럼 배운 주제의 이름을 적는 데서 그치지 않고, 학생이 해당 내용을 학습한 뒤 무엇을 이해하고 무엇을 수행할 수 있어야 하는지를 기술합니다.
예를 들어 2022 개정 중학교 정보과에서는 순차적으로 데이터를 저장하는 구조를 활용한 문제 해결, 논리 연산과 중첩 제어 구조의 활용, 함수와 디버거를 이용한 오류 분석·수정이 서로 다른 성취기준으로 구분됩니다.
이 구분은 평가 결과를 해석하는 데 중요합니다.
학생이 for 문의 문법을 외웠다는 사실과, 반복 구조를 이용해 실제 문제를 해결할 수 있다는 사실은 같지 않습니다. 오류가 있는 코드를 보고 정답 코드를 고를 수 있다는 사실과, 디버거를 활용해 오류의 원인을 추적할 수 있다는 사실도 같지 않습니다.
성취기준을 사용하면 시험이 “무슨 문법을 배웠는가”를 확인하는 데서 멈추지 않고, “학생이 어떤 수행까지 할 수 있는가”를 관찰하는 방향으로 이동합니다.
교육부가 설명하는 과정 중심 평가 역시 교육과정의 성취기준을 바탕으로 학생의 변화와 성장에 관한 자료를 여러 방식으로 수집하고, 그 결과를 피드백에 활용하는 평가입니다. 제가 제안한 시스템은 이러한 평가 원리를 코딩 학원과 비정규 교육 현장에서도 더 가볍게 사용할 수 있도록 만드는 시도였습니다.
성취기준은 AI에게 문제를 만들라고 명령하기 위한 프롬프트가 아니라, 문제·응답·피드백을 하나로 연결하는 데이터의 기준이었습니다.
같은 80점도 전혀 다른 진단이 되어야 합니다
아래는 시스템의 차이를 설명하기 위한 가상의 예시입니다. 실제 학습자 데이터가 아닙니다.
| 학생 | 총점 | 주로 틀린 문항 | 성취기준 단위의 해석 | 다음 학습 |
|---|---|---|---|---|
| 학생 A | 80점 | 중첩 조건문의 실행 결과를 추적하는 문항 | 논리 연산과 중첩 제어 구조에 관한 근거가 부족함 | 코드 실행 순서를 손으로 추적하는 연습 |
| 학생 B | 80점 | 오류가 있는 함수를 분석하고 수정하는 문항 | 함수 분해와 디버깅 과정에 관한 근거가 부족함 | 중단점과 변수 값을 활용한 디버깅 연습 |
기존 결과에서는 두 학생이 같습니다.
학생 A: 80점
학생 B: 80점
성취기준 단위로 보면 두 학생은 다릅니다.
학생 A: 제어 구조를 해석하는 연습이 필요함
학생 B: 오류를 추적하고 수정하는 연습이 필요함
이 차이가 진단입니다.
진단은 학생에게 그럴듯한 설명을 길게 생성하는 일이 아닙니다. 같은 점수 아래에 가려져 있던 서로 다른 학습 상태를 구분하고, 다음 행동을 다르게 만드는 일입니다.
공공데이터를 참고 자료가 아니라 제품의 구조로 사용했습니다
공공데이터 활용 아이디어에서 데이터가 발표 자료의 근거로만 사용되는 경우가 있습니다. 시장 규모를 설명하거나 문제의 심각성을 보여준 뒤, 정작 제품은 그 데이터 없이도 동일하게 작동하는 방식입니다.
이 기획에서는 NCIC 데이터가 빠지면 제품의 핵심 구조도 사라집니다.
각 문항은 다음과 같은 정보를 가져야 합니다.
문항 ID
성취기준 ID
평가하려는 수행
난이도
정답 또는 채점 기준
학생 응답
응답이 제공한 학습 근거
예를 들어 한 학생이 특정 문제를 틀렸다는 사실만으로 “반복문을 모른다”고 단정할 수는 없습니다. 문항이 어떤 성취기준을 측정하도록 설계되었는지, 같은 기준에 연결된 다른 문항에서는 어떻게 응답했는지, 문항 자체에 오류나 모호성이 없었는지를 함께 확인해야 합니다.
성취기준 ID가 문항과 응답을 연결하면 다음과 같은 집계가 가능해집니다.
- 한 학생이 반복적으로 어려움을 보이는 성취기준
- 한 학급 전체에서 오답이 집중되는 성취기준
- 예상 난이도와 실제 정답률이 크게 다른 문항
- 수업 이후에도 개선되지 않은 학습 영역
- 같은 총점을 받았지만 서로 다른 보충 학습이 필요한 학생
즉, NCIC는 보고서 뒤에 붙는 출처가 아니라 시험 데이터를 해석할 수 있게 만드는 스키마였습니다.
AI의 역할은 ‘판정’이 아니라 ‘변환 비용’을 낮추는 것이었습니다
성취기준 기반 평가가 교육적으로 타당하더라도, 현장에서 매번 성취기준을 찾고 평가 요소를 나누고 문항과 채점 기준을 만드는 일은 부담스럽습니다.
이 지점에서 AI가 필요했습니다.
AI는 다음 작업을 빠르게 보조할 수 있습니다.
- 성취기준의 문장을 학생 수준에 맞는 평가 요소로 분해합니다.
- 평가 요소를 측정할 문항과 채점 기준의 초안을 만듭니다.
- 문항이 어떤 성취기준과 연결되는지 근거를 설명합니다.
- 학생의 응답을 성취기준별 학습 근거로 정리합니다.
- 교사가 사용할 수 있는 보충 활동과 피드백의 초안을 제안합니다.
다만 AI가 만든 문항을 곧바로 시험에 넣거나, AI가 학생의 성취 여부를 최종 판정하게 해서는 안 됩니다.
LLM이 교육용 문항을 빠르게 생성할 수 있다는 연구는 꾸준히 나오고 있지만, 교육과정과의 정렬 여부나 문항 오류를 확인하기 위한 품질 관리가 필요하다는 점도 함께 지적됩니다. UNESCO 역시 교육에서 AI가 교사의 책임을 대체하지 않도록 인간의 감독과 최종 책임을 유지해야 한다고 권고합니다.
따라서 제가 설계한 흐름은 다음과 같습니다.

AI는 성취기준을 대신 정하지 않습니다. 성취기준과 실제 평가 사이에 존재하는 반복 작업을 줄입니다.
성취기준이 방향을 정하고, AI는 그 방향으로 이동하는 비용을 낮춥니다.
이 구분이 중요했습니다. AI가 학생을 “잘함·못함”으로 분류하는 시스템이 아니라, 교사가 더 빠르게 문항을 만들고 더 구체적으로 결과를 읽도록 돕는 시스템이어야 했습니다.
왜 글로벌 코딩교육이었는가
이 아이디어를 기획할 때에 인도의 민간 코칭 시장을 첫 적용 후보로 두었습니다.
인도 통계·프로그램이행부가 발표한 2025년 전국 교육 조사에 따르면, 학교에 재학 중인 학생의 27.0%가 해당 학년도에 사설 코칭이나 개인 지도를 이용했거나 이용 중이었습니다. 도시 지역은 30.7%, 농촌 지역은 25.5%였습니다.
이 데이터는 민간 코칭이 일부 학생만을 위한 주변적 서비스가 아니라, 많은 학생의 실제 학습 경로에 포함되어 있음을 보여줍니다.
다만 “한국의 성취기준을 그대로 해외에 수출한다”는 방식은 적절하지 않습니다. 국가마다 교육과정과 평가 철학, 학생의 학습 맥락이 다르기 때문입니다.
NCIC를 사용한 이유는 한국 교육과정이 전 세계의 정답이어서가 아닙니다. 교육과정과 성취기준이 구조화된 데이터로 존재할 때 어떤 평가 시스템을 만들 수 있는지 보여주는 출발점으로 적합했기 때문입니다.
실제 글로벌 서비스가 되려면 구조는 다음과 같이 확장되어야 합니다.
한국: NCIC 성취기준
인도: 국가·주별 교육과정 또는 기관 자체 기준
기타 국가: 각 지역의 공식 교육과정
민간 교육기관: 자체 커리큘럼을 동일한 형식으로 구조화
바뀌어야 하는 것은 기준의 내용입니다. 유지되어야 하는 것은 기준 → 문항 → 응답 → 진단이라는 연결 구조입니다.
공모전에서 인정받은 것은 ‘AI 문제 생성’만이 아니었다고 생각합니다
저희는 이 아이디어로 제8회 교육 공공데이터 인공지능(AI) 활용대회에서 동상에 해당하는 우수상을 받았습니다.
다만 수상했다고 해서 시스템의 교육 효과가 검증된 것은 아닙니다. 공모전 심사는 문제 정의와 아이디어의 타당성, 공공데이터와 AI의 활용 가능성을 평가하는 과정이지, 실제 학생의 학습 향상을 입증하는 임상시험이나 교육실험은 아니기 때문입니다.
그럼에도 이 기획이 설득력을 얻은 이유는 다음 세 가지였다고 생각합니다.
첫째, 해결하려는 문제가 분명했습니다.
코딩 시험은 점수를 남기지만, 학생이 무엇을 이해하지 못했는지는 충분히 남기지 못합니다.
둘째, 공공데이터가 장식이 아니었습니다.
NCIC의 성취기준이 문항 생성과 결과 분석을 연결하는 핵심 데이터 구조로 작동했습니다.
셋째, AI가 필요한 이유가 기능 목록에 있지 않았습니다.
AI는 챗봇을 추가하기 위해 사용된 것이 아니라, 성취기준을 실제 문항과 피드백으로 바꾸는 비용을 낮추기 위해 사용되었습니다.
결국 이 아이디어의 차별점은 AI가 얼마나 화려한 문장을 생성하는지가 아니었습니다.
시험을 본 뒤 남는 데이터를 더 교육적인 형태로 바꾸려 했다는 점이었습니다.
이제 필요한 것은 더 좋은 발표가 아니라 실제 검증 데이터입니다
수상 이후 이 아이디어가 실제 제품이 되려면, 가장 먼저 검증해야 할 것은 “AI가 문제를 만들 수 있는가”가 아닙니다. 그것은 이미 시연할 수 있습니다.
검증해야 할 질문은 훨씬 까다롭습니다.
| 검증 질문 | 측정할 데이터 |
|---|---|
| AI가 생성한 문항이 의도한 성취기준을 실제로 측정하는가 | 교육 전문가의 성취기준 일치 판정, 평가자 간 일치도 |
| 교사의 출제 부담을 실질적으로 줄이는가 | 문항 생성부터 승인까지 걸린 시간, 수정률, 폐기율 |
| 진단 결과가 다음 수업에 사용할 만큼 구체적인가 | 교사의 유용성 평가, 보충 활동 선택까지 걸린 시간 |
| 같은 점수를 받은 학생을 서로 다르게 설명할 수 있는가 | 동일 점수 집단 안에서 성취기준 프로필이 구분되는 비율 |
| 진단에 따른 보충 학습이 실제로 도움이 되는가 | 맞춤 보충 학습 전후의 동일 성취기준 재평가 결과 |
| 언어와 국가가 달라져도 기준과 문항의 연결이 유지되는가 | 번역 전후 성취기준 정렬률, 현지 교사의 수정률 |
최소한의 검증은 다음과 같이 시작할 수 있습니다.
성취기준 5개를 정하고, 기준마다 AI 문항 10개씩 총 50개의 문항을 생성합니다. 두 명 이상의 교육자가 각 문항이 목표 성취기준에 부합하는지, 정답이 명확한지, 학생 수준에 맞는지 독립적으로 평가합니다. 수정 없이 사용 가능한 문항, 수정 후 사용 가능한 문항, 폐기해야 하는 문항의 비율을 기록합니다.
그다음 학생 응답을 수집해 같은 총점을 받은 학생들 사이에서 실제로 서로 다른 성취기준 프로필이 나타나는지 확인합니다. 마지막으로 진단 결과를 본 교사가 다음 보충 활동을 더 빠르고 구체적으로 선택할 수 있는지 측정해야 합니다.
이 데이터가 쌓여야 다음과 같이 말할 수 있습니다.
- AI가 성취기준에 맞는 문항을 어느 정도 안정적으로 생성합니다.
- 교사의 검수 시간을 실제로 줄였습니다.
- 총점만 제공했을 때보다 더 구체적인 보충 학습을 선택할 수 있었습니다.
- 특정 성취기준에 맞춘 보충 학습 뒤 재평가 결과가 개선되었습니다.
현재 단계에서 이 문장들은 결과가 아니라 검증해야 할 가설입니다.
수상은 가능성을 인정받은 결과입니다. 제품의 가치는 실제 사용 데이터로 다시 증명해야 합니다.
시험은 학생을 끝내는 숫자가 아니라, 다음 수업을 시작하는 데이터여야 합니다
이 아이디어를 기획하며 가장 크게 바뀐 생각은 AI에 관한 것이 아니었습니다.
처음에는 AI가 문제를 얼마나 빠르게 만들 수 있는지가 중요해 보였습니다. 그러나 문제를 깊게 들여다볼수록 더 중요한 것은 시험이 끝난 뒤 무엇이 남는가였습니다.
점수만 남으면 시험은 학생을 요약하고 끝납니다.
성취기준별 근거가 남으면 시험은 다음 수업을 시작합니다.
80점
이라는 한 줄을
제어 구조는 이해했지만,
디버깅 과정에서 반복적으로 막혔습니다.
다음에는 오류를 단계별로 추적하는 연습이 필요합니다.
라는 교육적 정보로 바꾸는 것.
이것이 제가 공모전에서 제안한 성취기준 기반 AI 평가 시스템의 핵심입니다.
AI가 교육을 대신해야 하는 것은 아닙니다. 오히려 교사가 학생을 더 구체적으로 이해하는 데 필요한 반복 작업을 줄여야 합니다. 공공데이터도 발표 자료를 그럴듯하게 만드는 숫자로 끝나서는 안 됩니다. 학생의 응답에 교육적 의미를 부여하는 구조가 되어야 합니다.
저희가 바꾸고 싶었던 것은 문제 생성의 속도가 아니었습니다.
좋은 평가는 학생을 줄 세우는 데서 끝나지 않습니다. 다음 수업을 다르게 만드는 정보까지 남깁니다.