AI 이후의 교육, 그리고 인간의 자리 — 3부
AI가 과제를 대신한다면, 무엇을 평가해야 하는가?
AI 이후의 교육, 그리고 인간의 자리 — 3부
AI가 코드를 작성하기 시작하면서 코딩 수업에서도 곤란한 일이 생겼습니다. 학생에게 과제를 내면 학생이 작성한 코드인지, AI가 작성한 코드인지 구분하기 어려워진 것입니다.
이 이야기를 들었을 때 저는 평가 방식 자체를 바꾸면 어떨까 생각했습니다.
학생이 AI를 사용했다는 사실이 그렇게까지 중요한 것일까요? 그 학생이 결과물을 이해하고 있다면, AI와 함께 과제를 완성한 경험 역시 학습으로 볼 수 있지 않을까요?
저는 평가해야 할 것은 도구를 사용했는지가 아니라, 그 도구를 통해 무엇을 이해하게 되었는지라고 생각합니다.
공을 하나 튀겨 봅시다
코딩 수업에서 사방으로 튀어 다니는 공을 만드는 과제를 낸다고 가정해 보겠습니다.
공의 중심 좌표를 x, y로 저장하고, 속도를 vx, vy로 저장합니다. 매 프레임 위치를 갱신하다가 공이 벽에 닿으면 이동 방향을 반대로 바꾸면 됩니다. 예를 들어 가로 방향의 충돌은 다음처럼 간단히 표현할 수 있습니다.
1
2
3
if (x + radius >= width || x - radius <= 0) {
vx *= -1;
}
공의 중심을 좌표로 사용하기 때문에 반지름을 고려합니다. 왼쪽이나 오른쪽 벽에 닿으면 가로 속도의 부호를 반전시키는 것이죠. 실제 프로그램에서는 공이 벽 밖에 머물며 반복해서 방향을 바꾸지 않도록 위치를 보정하는 처리도 필요할 수 있습니다.
이 과제를 평가하는 일반적인 방법은 제출된 코드를 확인하는 것입니다. 의도대로 공이 튕기는지, 변수와 조건문을 잘 사용했는지 살펴봅니다.
하지만 AI가 코드를 완성할 수 있게 되면서 중요한 전제 하나가 무너졌습니다.
완성된 코드가 학생의 이해를 증명하지는 않는다는 사실입니다.
코드를 제출하게 하고, 진짜 평가는 설명으로 한다
저라면 학생에게 코드 작성을 직접 해보라고 권하면서도 AI 사용 자체는 허용하겠습니다. 대신 과제를 제출한 뒤 코드를 설명하도록 하겠습니다.
어떤 변수가 무엇을 의미하는지, 왜 반지름을 더하거나 빼는지, 왜 속도에 -1을 곱하는지, 어떤 순서로 코드가 실행되는지 자신의 말로 설명하는 것입니다.
그러면 세 가지 경우를 구분할 수 있습니다.
첫째, 코드를 직접 작성했고 설명도 제대로 하는 학생입니다. 과제를 수행하며 수업 내용을 익혔다고 판단할 근거가 있습니다.
둘째, AI가 코드를 작성했지만 학생이 코드를 충분히 설명하는 경우입니다. 직접 작성하는 능력은 별도로 확인해야겠지만, 최소한 작동 원리를 이해했다는 근거는 있습니다. 저는 이 학생을 단지 AI를 사용했다는 이유로 낮게 평가할 필요는 없다고 생각합니다.
셋째, 직접 작성했든 AI에게 맡겼든 코드를 설명하지 못하는 경우입니다. 프로그램은 완성되었지만 아직 이해하지 못한 부분이 있다는 뜻일 수 있습니다.
이 방식의 핵심은 결과물의 출처를 추적하는 대신 학생에게 남아 있는 이해를 확인한다는 점입니다.
대본을 외워서 발표하면 어떡하느냐고요?
당연히 가능한 반론입니다.
학생은 AI에게 코드뿐 아니라 발표 대본까지 만들어 달라고 할 수 있습니다. 그리고 그것을 외워서 발표할 수도 있습니다.
하지만 여기에도 두 가지 대응이 있습니다.
하나는 발표 뒤에 질문을 던지는 것입니다. 예를 들어 이렇게 묻는 것이죠.
“공의 좌표가 중심이 아니라 왼쪽 위 모서리라면 충돌 판정이 어떻게 달라질까요?”
“공이 너무 빨라 한 프레임 사이에 벽을 지나치면 어떤 문제가 생길까요?”
“공이 벽에 닿았을 때 튕기는 대신 멈추게 하려면 어디를 고쳐야 할까요?”
외운 설명을 다시 말하는 것과, 이해한 원리를 바뀐 조건에 적용하는 것은 다릅니다. 필요하다면 학생이 코드 한두 줄을 직접 수정하게 할 수도 있습니다.
다른 하나는 대본을 외운 행위 자체를 무조건 무가치하게 보지 않는 것입니다.
코드의 의미를 전혀 보지 않고 제출하는 것보다는, 설명을 읽고 반복하며 외운 편이 학습과 접촉할 기회가 많습니다. 외우다가 궁금한 점이 생겨 질문할 수도 있고, 낯설었던 용어에 익숙해질 수도 있습니다.
물론 암기가 곧 이해는 아닙니다. 대본을 잘 외웠다는 이유만으로 높은 점수를 주자는 뜻도 아닙니다. 아무것도 배우지 않은 상태와 충분히 이해한 상태 사이에도 여러 단계가 있다는 이야기입니다.
평가는 그 단계를 확인하는 방향으로 구성될 수 있습니다.
설명에서 끝나지 않고 응용까지
실제 수업에서는 다음과 같은 평가 구성을 생각해 볼 수 있습니다.
| 평가 항목 | 확인하려는 능력 | 예시 비중 |
|---|---|---|
| 결과물 구현 | 요구한 동작이 완성되었는가 | 20% |
| 코드 설명 | 변수·조건·실행 순서를 이해하는가 | 30% |
| 조건 변경 질문 | 이해한 원리를 다른 상황에 적용하는가 | 30% |
| 수정과 검증 | 오류를 찾아 고치고 결과를 확인하는가 | 20% |
어디까지나 예시입니다. 코드를 직접 작성하는 능력을 가르치는 기초 수업이라면, AI를 사용하지 않고 짧은 코드를 작성하는 별도 평가가 필요할 수 있습니다. 반면 도구를 활용한 문제 해결이 목표인 수업이라면 AI 사용 능력 자체를 평가할 수도 있습니다.
또한 말로 설명하는 능력과 코드를 이해하는 능력은 완전히 같지 않습니다. 발표에 긴장하는 학생도 있습니다. 그런 경우에는 코드에 주석을 달거나, 글로 설명하거나, 짧은 실습으로 보여주는 방식을 병행할 수 있어야 합니다.
평가의 형식보다 중요한 것은 확인하려는 능력이 무엇인지 분명하게 정하는 일입니다.
귀찮아지는 평가, 그렇지만 피할 수 있을까
문제는 비용입니다.
학생 서른 명에게 각각 몇 분씩 질문하려면 많은 시간이 필요합니다. 학생당 7분만 사용해도 210분입니다. 한두 번의 수업으로 끝내기 어렵습니다.
그러니 모든 숙제를 구술 평가로 바꿀 수는 없을 것입니다. 주요 과제에 한정하거나, 소그룹 시연과 개별 질문을 결합하거나, 녹화한 설명에 추가 질문을 붙이는 등의 방법이 필요합니다.
AI를 평가 보조 도구로 사용하는 방법도 상상해 볼 수 있습니다. AI가 학생에게 코드에 관한 질문을 던지고 답변을 정리해 주면 교사는 이해가 불확실한 지점을 중심으로 확인할 수 있겠죠. 단, AI의 평가를 그대로 확정하지 않고 교사가 검토할 수 있어야 합니다.
이런 수고는 분명 번거롭습니다. 하지만 AI가 등장하기 전의 평가가 간편했던 이유를 돌아볼 필요도 있습니다.
우리는 완성된 과제와 학생의 이해 사이에 상당한 연관성이 있다고 가정하고, 결과물을 통해 이해를 간접적으로 추정해 왔습니다. AI는 그 추정을 더 어렵게 만들었습니다.
그렇다면 결과물을 보호하기 위해 AI를 끝없이 막는 것뿐 아니라, 이해를 직접 확인하기 위해 평가에 더 많은 자원을 쓰는 선택도 논의할 수 있어야 합니다.
목적이 된 점수
여기서 교육의 범위를 조금 넘어가는 질문이 생깁니다.
시험은 본래 학생이 무엇을 배웠는지 확인하기 위한 장치입니다. 그런데 시험 점수가 진학과 취업, 자격과 생계에 큰 영향을 미치면서 점수를 얻는 일 자체가 목표가 되기도 합니다.
그러면 공부는 점수를 얻기 위한 여러 방법 중 하나가 됩니다. 문제를 이해하는 대신 정답을 외우고, 능력을 키우는 대신 평가의 허점을 찾으려는 유인도 생깁니다.
이는 AI가 만들어 낸 문제가 아닙니다. AI는 이미 존재하던 유인을 더 강력한 도구와 만나게 했을 뿐입니다.
우리가 정말 확인하려는 것은 무엇일까요?
학생이 답을 외웠는가, 학생이 답을 만들어 낼 수 있는가, 아니면 모르는 문제를 만났을 때 답을 찾아갈 수 있는가.
세 능력은 서로 다릅니다. 모두 가치가 있지만 수업의 목적에 따라 중요도도 달라집니다.
AI 시대의 교육 평가를 다시 설계한다는 것은 단순히 부정행위를 단속하는 기술을 추가하는 일이 아닐 것입니다. 점수가 무엇을 대표해야 하는지 다시 묻는 일에 가깝습니다.
그리고 점수가 자격이 되고, 자격이 생계가 되는 순간, 이 문제는 더 이상 학교 안에서만 끝나지 않습니다.
이전 글: 2부 — 이름을 모르고도 발견할 수 있다
다음 글: 4부 — 과도기라는 세 글자의 너저분함
