Simulating Students' Java Programming Errors with Large Language Models
이 논문은 거대 언어 모델, 특히 Claude Sonnet 4가 학생들의 다양하고 현실적인 Java 프로그래밍 오류를 효과적으로 시뮬레이션할 수 있음을 입증하며, 이는 교육 연구 및 지능형 튜터링 시스템을 위해 실제 제출물을 수집하는 것에 대한 확장 가능한 대안을 제공한다.
원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
당신이 큰 프로그래밍 수업을 준비하려는 교사라고 상상해 보세요. 당신은 학생들이 실수를 할 것이라는 점을 알고 있지만, 실제로 수업을 진행하고 과제를 수집하기 전까지는 그 실수가 정확히 무엇일지 예측할 수 없습니다. 이는 느리고 비용이 많이 드는 과정입니다.
이 논문은 간단한 질문을 던집니다: 우리는 초지능형 AI(대규모 언어 모델, LLM)를 사용하여 미리 '혼란스러워하는 학생'인 척하며 우리가 미리 만들어낼 수 있는 실수들을 생성할 수 있을까?
다음은 일상적인 비유를 사용하여 설명한 이 실험의 구성입니다.
목표: "가짜 학생" 테스트
연구진은 AI가 마치 초보 학생이 작성한 것처럼 보이는 자바(Java) 코드를 작성할 수 있는지 확인하고 싶었습니다. 구체적으로는 **논리적 오류(logical errors)**가 포함된 코드입니다.
- 논리적 오류는 레시피에 "소금을 적당히 넣으세요"라고 써놓고 정작 소금을 넣는 것을 잊어버린 것과 같습니다. 컴퓨터는 코드를 실행하지만, 사고 과정에 결함이 있기 때문에 결과가 틀리게 나옵니다.
- 도전 과제: 단순히 AI에게 "코드를 작성해줘"라고 요청하면, AI는 보통 완벽한 코드를 작성합니다. 반대로 "코드를 망가뜨려봐"라고 요청하면, AI는 실제 학생들은 절대 하지 않을 법한 무작위적이고 어처구니없는 실수(예: 마침표가 있어야 할 자리에 쉼표를 넣는 등)를 저지르곤 합니다. 목표는 AI가 현실적인 실수를 하게 만드는 것이었습니다.
실험: "맛 테스트"
연구진은 실제 강의실(CodeWorkout)에서 가져온 33개의 서로 다른 프로그래밍 문제를 가져왔습니다. 그리고 다섯 가지 서로 다른 AI 모델이 이 문제들을 풀도록 했지만, AI가 실수를 하도록 유도하기 위해 세 가지 다른 "지시 스타일(프롬프트)"을 사용했습니다.
- 직접 명령 (Direct Order, IO): "여기에 문제가 있다. 틀린 답을 내놓아라."
- 생각하며 말하기 (Thinking Aloud, CoT): "단계별로 생각하고, 어디서 실수할 수 있는지 결정한 다음, 틀린 코드를 작성하라."
- 자기 수정 루프 (Self-Correction Loop, Self-Refine): "틀린 답을 작성한 다음, 그것을 비판하고, 약간 수정하여 다른 종류의 틀린 답으로 만들어라."
그 후 연구진은 AI의 "가짜 실수"를 실제 학생들이 저지른 74,000개의 실수와 비교했습니다.
좋은 가짜를 위한 두 가지 주요 규칙
유용하기 위해서, AI의 가짜 실수는 두 가지 테스트를 통과해야 했습니다.
- 다양성 (다양성 테스트): AI가 많은 다 종류의 실수를 만들어냈는가, 아니면 똑같은 오류를 계속 반복했는가? (예를 들어, 요리사가 10가지 서로 다른 탄 쿠키를 만들려고 한다고 가정해 봅시다. 만약 그 쿠키들이 모두 똑같이 생겼다면, 그것은 다양하지 않은 것입니다.)
- 정렬 (현실성 테스트): AI의 실수가 실제 인간이 할 법한 행동인가? (만약 AI가 인간은 절대 생각조차 못 할 방식으로 코드를 틀리게 작성한다면, 그것은 좋은 시뮬레이션이 아닙니다.)
연구 결과
1. AI는 실수를 할 수 있지만, 모든 AI가 평등한 것은 아니다
모든 AI 모델은 다양한 오류를 생성할 수 있었습니다. 하지만 어떤 모델이 더 뛰어난지는 달랐습니다.
- Gemini 2.5 Pro는 혼돈의 예술가 같았습니다. 매우 다양한 실수를 만들어냈지만(높은 다양성), 그중 상당수는 이상하고 실제 학생의 오류처럼 보이지 않았습니다.
- GPT-4o는 신중한 학생 같았습니다. 비슷한 실수를 계속해서 반복했습니다(낮은 다양성).
- Claude Sonnet 4는 그룹 내의 **골디락스(딱 적당한 존재)**였습니다. 가장 좋은 균형을 찾았습니다. 충분히 다양한 종류의 실수를 만들어내면서도, 그 내용이 실제 학생들이 작성하는 것과 매우 유사했습니다.
2. "생각하며 말하기" 기법이 도움이 되었다
연구진이 AI에게 코드를 작성하기 전에 "단계별로 생각하라"(Chain-of-Thought)고 지시했을 때, 실수가 더 현실적이 되었습니다. 이는 마치 AI가 단순히 코드를 무작위로 망가뜨리는 것이 아니라, 학생이 혼란을 겪는 과정을 시뮬레이션하는 것과 같았습니다.
3. "난이도" 요인
연구진은 문제가 얼마나 "어려운지"(학생들이 문제를 푸는 데 걸린 횟수를 기준으로)를 살펴보았습니다.
- 쉬운 문제: AI는 학생들을 아주 잘 흉내 냈습니다.
- 어려운 문제: 문제가 어려워질수록 AI의 실수는 더 다양해졌지만(여러 가지 잘못된 경로를 시도함), 실제 학생들과의 유사성은 떨어졌습니다. 이는 복잡한 장면을 연기하려는 초보 배우와 같습니다. 그들은 다양한 해석을 시도할 수는 있지만, 실제 인간의 미묘한 연기를 포착하기에는 부족합니다.
4. "블라인드 맛 테스트" (인간 전문가)
연구진은 실제 학생의 코드와 AI가 생성한 코드가 섞인 것을 보고 전문가들을 고용했습니다. 전문가들은 무엇이 무엇인지 모르는 상태였습니다.
- 결과: 전문가들은 **83.7%**의 확률로 속았습니다. 그들은 AI의 코드를 사람이 작성한 것이라고 생각했습니다.
- 반전: 전문가들은 실제로 AI의 실수가 실제 학생들의 실수보다 더 그럴듯하다(더 현실적이다)고 평가했습니다. 왜일까요? AI는 "깔끔한" 실수(예: 전형적인 교과서적 오류)를 하는 반면, 실제 학생들은 여러 개의 오류가 섞인 지저지고 복잡한 실수를 하기 때문입니다. AI는 "이상화된" 혼란스러운 학생이었고, 실제 학생들은 더 무질서했습니다.
핵심 요약
이 논문은 AI가 현실적인 프로그래밍 오류를 생성하는 "대역" 역할을 할 수 있음을 증명합니다.
- Claude Sonnet 4가 현재 최고의 "학생 시뮬레이터"입니다.
- 어려운 문제는 AI를 더 창의적으로 만들지만, 실제 인간의 행동과는 덜 정확하게 만듭니다.
- 트레이드오프(절충 관계): AI가 엄청나 다양한 실수를 하게 만들 수도 있고, 혹은 매우 현실적인 실수를 하게 만들 수도 있지만, 이 두 가지를 동시에 완벽하게 잡기는 어렵습니다.
연구진은 이것이 교사와 교육 소프트웨어 개발자들에게 강력한 도구가 될 것이라고 제안합니다. 수천 개의 실제 학생 실수를 수집하기 위해 수년을 기다리는 대신, 이 "가짜" 실수들을 사용하여 더 나은 튜터링 도구를 구축하고 교사가 학생들이 어디에서 막힐지 미리 예측하도록 도울 수 있습니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.