• Home
  • AI Report
  • GPT-4, 프로그래밍 교사의 비밀 병기 될까?… 코드 피드백으로 프로그래밍 학습 혁신한다

GPT-4, 프로그래밍 교사의 비밀 병기 될까?… 코드 피드백으로 프로그래밍 학습 혁신한다

You’re (Not) My Type – Can LLMs Generate Feedback of Specific Types for Introductory Programming Tasks?
이미지출처: 미드저니

You’re (Not) My Type – Can LLMs Generate Feedback of Specific Types for Introductory Programming Tasks?

프로그래밍 학습에서 피드백의 중요성과 도전 과제

프로그래밍 학습은 단순히 문법과 문맥을 이해하는 것을 넘어서는 복잡한 과정이다. 특히 초보 프로그래머는 숙련된 프로그래머가 이미 익숙한 디버깅 기법이나 문제 해결 능력을 갖추지 못했기 때문에 외부 지원이 필수적이다. 피드백은 이러한 외부 지원의 핵심 요소로, 학습 성공에 가장 큰 영향을 미친다고 알려져 있다.

기존의 프로그래밍 교육 도구(예: Codewars, Codecademy)는 주로 코드의 “정답 여부”를 간단히 표시하거나 오류를 지적하는 형태로 작동한다. 그러나 이러한 단순 피드백은 코드 오류의 근본적인 원인이나 수정 방법을 제공하지 못하며, 학습 효과를 제한한다. 최근 대규모 언어 모델(LLM)과 생성형 AI(Generative AI)의 발전은 더 풍부하고 개인화된 피드백 제공 가능성을 열어 주었다. 특히 GPT-4와 같은 모델은 학생 코드에 대한 상세한 설명, 개선 방향, 오류 수정 제안 등 다양한 형태의 피드백을 생성할 수 있다.

연구 목표와 접근 방식

이 연구의 목적은 GPT-4를 활용해 프로그래밍 과제에서 특정 유형의 피드백을 생성하고, 그 품질과 적합성을 평가하는 것이다. 이를 위해 연구진은 다음 두 가지 질문에 집중했다. 첫 번째 질문은 LLM이 특정 피드백 유형을 정확히 생성할 수 있는가 하는 질문이고, 두 번째는 생성된 피드백은 어떤 특성을 가지고 있는가이다.

연구진은 다양한 유형의 피드백을 생성하기 위해 프롬프트를 설계하고 반복적으로 개선했다. 또한, 학생들이 작성한 실제 코드를 기반으로 GPT-4가 생성한 피드백을 분석했다. 연구에 사용된 데이터는 Java, Python, C++, Kotlin 등 다양한 언어로 작성된 코드를 포함했으며, 과제의 난이도와 오류 유형도 다양했다.

피드백 유형과 설계 과정

프로그래밍 학습에서 피드백은 다양한 형태로 제공될 수 있다. 이 연구에서는 피드백을 크게 여섯 가지 유형으로 분류하였다. 첫 번째로, 결과 지식(KR)은 학생 코드가 정답인지, 오답인지를 간단히 알려주는 피드백이다. 예를 들어 “정답입니다” 또는 “오답입니다”와 같은 간결한 메시지를 제공한다. 두 번째로, 성과 지식(KP)은 학생의 작업이 과제의 목표를 얼마나 달성했는지를 비율로 평가한다. 예를 들어, “현재 75%를 달성했습니다”와 같은 피드백이 이에 해당한다.

세 번째 유형은 개념 지식(KC)으로, 학생 코드와 관련된 프로그래밍 개념에 대한 설명을 제공한다. 이는 오류와 연관된 개념을 심층적으로 설명해 초보 학습자의 이해를 돕는다. 네 번째로, 제약 조건 지식(KTC)은 과제의 요구사항이나 제약 조건을 강조한다. 예를 들어, “이 과제에서는 외부 라이브러리를 사용할 수 없습니다”와 같은 과제의 규칙을 안내하는 피드백이 여기에 포함된다.

다섯 번째로, 오류 지식(KM)은 코드의 오류에 대한 구체적 설명을 제공한다. 예를 들어, “여기에서 변수 초기화가 누락되었습니다”와 같이 문제의 원인을 정확히 짚어주는 피드백이다. 마지막으로, 진행 방법 지식(KH)은 다음 단계로 어떻게 나아갈지에 대한 힌트를 제공한다. 예를 들어, “이 문제를 해결하려면 이 조건문을 검토하세요”와 같은 피드백은 학생이 문제를 단계적으로 해결하도록 돕는다.

연구 과정에서 LLM이 제공하는 피드백의 품질을 높이기 위해 프롬프트를 다섯 차례에 걸쳐 개선했다. 초기 프롬프트는 모델 출력이 과도하게 길거나 요청한 피드백 유형 외의 정보를 포함하는 문제가 있었다. 이에 따라, 프롬프트를 간결하고 명확하게 다듬어, 최종적으로는 요청된 피드백 유형만을 정확히 생성할 수 있도록 설계되었다.

연구진은 프롬프트 설계 시 과제 설명, 템플릿 코드, 학생 제출 코드, 모델 솔루션, 그리고 생성할 피드백 유형을 명확히 제공했다. 이를 통해 LLM이 초보 학습자를 위한 간결하고 이해하기 쉬운 피드백을 생성할 수 있도록 유도했다.

프롬프트 설계

프롬프트 설계는 LLM(GPT-4)을 통해 특정 피드백 유형을 생성하는 데 초점을 맞춰, 여러 단계를 거쳐 점진적으로 개선되었다. 초기 설계에서는 과제 설명, 템플릿 코드, 학생 제출 코드, 모델 솔루션, 그리고 생성할 피드백 유형을 포함했다. 그러나 첫 번째 버전의 프롬프트는 지나치게 길거나, 요청한 피드백 유형 외의 정보가 혼합되는 문제를 보였다. 예를 들어, 단순히 정답 여부만을 전달해야 하는 결과 지식(KR) 유형에서도 과도한 설명이나 다른 피드백 요소가 포함되었다.

이 문제를 해결하기 위해 두 번째 버전에서는 프롬프트에 구체적인 지침을 추가했다. 특정 피드백 유형에만 초점을 맞추도록 하고, 불필요한 정보나 모델 솔루션에 대한 언급은 배제하도록 설계되었다. 또한, KR 유형은 “정답입니다” 또는 “오답입니다”로 간결하게 표현되도록 명확히 지시했다.

세 번째 버전에서는 피드백의 간결성과 초점 강화를 위해 추가적인 조건이 포함되었다. 오류 지식(KM)의 경우, 학생 코드에서 오류를 정확히 지적하되 해결 방법은 포함하지 않도록 지시했다. 진행 방법 지식(KH)의 경우, 단순히 “검토하세요” 같은 모호한 표현을 피하고, 구체적인 개선 단계를 제시하도록 했다.

네 번째 버전에서는 예시를 추가해 피드백 이해를 돕는 방향으로 설계가 변경되었다. 그러나 이 과정에서 일부 예시가 부정확하거나 코드 컴파일이 불가능한 형태로 생성되는 문제가 발생했다. 이를 해결하기 위해 다섯 번째 버전에서는 예시 생성을 제한하고 피드백을 간결하고 명확하게 전달하는 데 초점을 맞췄다.

최종적으로 설계된 프롬프트는 다음과 같은 조건을 충족했다. 첫째, 요청된 피드백 유형에만 초점을 맞추고, 추가 정보는 배제했다. 둘째, 학생 코드의 구체적인 요소를 반영해 개인화된 피드백을 제공했다. 셋째, 모든 피드백은 간결하고 초보자에게 적합한 언어로 표현되었다. 이러한 설계를 통해 GPT-4는 요청된 피드백 유형을 높은 정확도로 생성할 수 있었다.

연구 결과: LLM의 피드백 생성 능력

연구 결과, LLM(GPT-4)은 요청된 피드백 유형을 대부분 정확히 생성하는 데 성공했다. 총 66개의 테스트 사례 중 63개에서 요청된 피드백 유형과 정확히 일치하는 결과를 보여, 높은 성능을 입증했다. 각 피드백 유형의 생성 결과는 다음과 같은 특징을 보였다.

먼저, 결과 지식(KR)은 단순히 코드가 정답인지 오답인지 명확히 전달하는 데 초점이 맞춰졌다. 모든 사례에서 간결하고 정확한 정답/오답 메시지가 제공되었다. 성과 지식(KP)의 경우, 학생 코드가 과제 목표를 얼마나 달성했는지 백분율로 평가하면서, 세부적으로 분할된 목표를 기준으로 진행 상황을 설명했다. 일부 사례에서는 예상보다 높은 점수를 부여하거나 지나치게 세부적인 설명이 포함되기도 했으나, 대체로 유용한 피드백을 생성했다.

개념 지식(KC)은 학생 코드와 관련된 프로그래밍 개념을 설명하는 데 효과적이었다. 특히, 코드의 오류와 연결된 개념에 대해 상세한 설명을 제공해 초보 학습자의 이해를 돕는 데 기여했다. 그러나 일부 경우에는 오류와 직접적인 관련이 없는 개념을 불필요하게 언급하기도 했다. 제약 조건 지식(KTC)은 과제의 요구사항이나 제약 조건을 명확히 전달했다. 예를 들어, 특정 라이브러리를 사용하지 않아야 한다는 과제 조건을 강조하거나, 코드가 과제 설명을 준수하지 않는 부분을 지적했다. 다만, 간혹 불필요하거나 오해의 소지가 있는 조건을 추가적으로 언급하는 사례도 관찰되었다.

오류 지식(KM)은 대부분의 코드 오류를 정확히 식별하며, 오류의 원인을 명확히 설명했다. 특히, 코드 내의 구체적인 위치를 지적하며 오류를 분석해 유용한 피드백을 제공했다. 그러나 코드 스타일 개선을 제안하면서 이를 “오류”로 잘못 분류한 사례가 있어 초보 학습자가 혼란을 겪을 가능성도 있었다. 마지막으로, 진행 방법 지식(KH)은 학생들이 문제를 해결하는 데 필요한 구체적인 힌트를 제공했다. 대부분의 사례에서 다음 단계를 제시하며 실질적인 도움을 주었으나, 일부는 “다시 확인해 보세요”와 같은 모호한 표현에 그친 경우도 있었다.

이와 같은 결과를 종합하면, GPT-4는 특정 피드백 유형을 생성하는 데 높은 잠재력을 가지고 있지만, 일부 잘못된 정보와 모호한 표현의 가능성이 여전히 존재한다. 연구는 이러한 한계를 극복하기 위해 추가적인 프롬프트 설계와 평가가 필요함을 강조하며, LLM 기반 피드백이 학습자의 학습 경험을 크게 향상시킬 수 있는 가능성을 보여주었다.

교육과 연구에 주는 시사점

GPT-4와 같은 LLM은 대규모 수업에서 교사의 피드백 부담을 줄이고, 학생 개개인에게 적합한 맞춤형 피드백을 제공하는 데 유용하다. 그러나 LLM이 생성한 피드백의 오류 가능성을 학생들에게 알리고, 비판적으로 평가하는 방법을 가르칠 필요가 있다.

단순히 LLM을 단독으로 사용하는 것보다는, 테스트 케이스 평가와 결합한 하이브리드 접근법이 더 효과적이다. 예를 들어, 테스트를 통과한 코드에 대해서는 스타일 개선 피드백만 제공하는 방식이 가능하다.

추가 연구를 통해 다양한 과제 유형과 더 많은 프로그래밍 언어를 포함해야 한다. 또한, 학생과 전문가가 피드백의 효과성을 평가하는 연구도 필요하다.

결론

GPT-4는 초보 프로그래머를 위한 세분화된 피드백을 생성할 수 있는 잠재력을 보여주었다. 프롬프트 설계를 통해 특정 유형의 피드백을 정확히 생성할 수 있었으며, 대부분의 경우 학생 코드에 적합한 정보를 제공했다. 하지만 일부 오류와 잘못된 정보의 가능성을 고려해 하이브리드 접근법이나 교사의 추가 검토와 결합하는 방식이 필요하다. 이를 통해 LLM은 교육 도구로서 강력한 지원 역할을 할 수 있다.

기사에 인용된 논문의 원문은 링크에서 확인할 수 있다.

기사는 클로드 3.5 Sonnet과 챗GPT-4o를 활용해 작성되었습니다. 




GPT-4, 프로그래밍 교사의 비밀 병기 될까?… 코드 피드백으로 프로그래밍 학습 혁신한다 – AI 매터스