에이전틱 코딩의 시대가 되면서, 신입 개발자들의 많은 업무가 자동화되고 있다. 그 결과, 신입 개발자들이 “시행착오"를 겪으면서 성장할 수 있는 기회들 또한 많이 감소하고 있다. 그렇다면 대학의 역할은 무엇일까? 단순 지식 전달을 넘어서, 학생들이 시행착오를 많이 겪을 수 있도록 환경을 제공하는 것이라 생각한다. (사실 크게 달라진 것은 없다.) 컴퓨터과학 분야에서는 PBL(Project-Based Learning)이 이런 환경을 인위적으로 조성하는 기법으로 사용되고 있다. 이는 일반적인 교과서의 개념을 수업에서 소개하는 것에 더불어, 학생이 특정 교과서 개념(paging, connection setup, B+-tree 등)을 직접 구현하면서 그 개념을 내재화하고, 시행착오를 통해 성장하는 학습 방법이다. 나 또한 KAIST에서 다년간 KENS PBL 조교를 하며 많은 학생들이 성장하는 것을 지켜보기도 했다.
그렇다면 에이전틱 코딩의 시대에 PBL을 어떻게 하면 좋을까? 개인적으로는 학생들에게 AI를 적게 쓰면서 문제를 풀어보라고 권하고 싶다. 앞서 언급한 것처럼 이런 과제들의 핵심은 학생들이 겪을 수 있는 시행착오의 수를 늘려 이를 해결하는 과정에서 시스템에 대한 이해를 향상하는 것이다. 만일 AI에 과의존하여 학습을 하게 된다면1, 학생들이 겪는 시행착오도 많이 줄어들고 그 학습 효과도 그에 비례해서 감소할 것이다. 결과적으로 학생이 무엇을 얻어가는가? 왜 시간 낭비를 하는가? AI를 활용하더라도 code ownership2을 가져가기를 바란다. 여러분의 선택이다.
나는 당분간은 학생들이 이 가이드라인 지킬 수 있도록 수업을 설계할 예정이다. 한국 수업 환경의 현실적인 여건(과한 경쟁, 상대평가, 높은 학점에 대한 수요)은 학생들이 과제를 AI에게 맡기게 되는 어쩔 수 없는 환경이 된다는 것을 십분 이해한다. 핵심 개념을 정말 잘 이해하기 위해 AI를 사용하지 않고 과제를 수행하는 학생이 AI에 과제를 일임하는 옆에 있는 친구보다 더 낮은 점수를 받는 경우가 생길 수 있으며, 이 때문에 스스로 과제를 해결하고 싶어도 어쩔 수 없이 AI를 사용할 수밖에 없는 상황이 발생할 수 있다. 나는 이해 없이 AI를 이용하여 과제를 수행하는 것을 막지는 않지만(아마 막을 수도 없을 것이다), 적어도 정말 스스로 과제를 수행하고자 하는 학생이 손해를 보지 않게 만들려고 한다. 구체적으로는 이번 수업에서는 다음과 같은 채점(grading) 정책을 쓰고 있다.
- 프로젝트 과제는 상대평가 성적에 25% 반영
- 다만, 과제 절대점수(0~100)가 50점 이상이면 과제 성적 25%는 Full credit을 부여
- 상대평가로는 Letter grade(A/B/C/D)가 결정. 비율은 학교 정책에 따른다.
- 만약 과제 점수가 70점 이상이라면 +(plus)를 부여, 미만이라면 0(zero)를 부여. 한양대학교에는 -가 없고, +/0 비율에 관련된 규정은 없다.
과제 점수가 50점이 넘어가면, (적어도 이 수업 내에서는) 다른 학생들과의 경쟁이 끝나게 된다. 또, 70점이 넘어가게 되면 더 이상 얻게 되는 이득이 없기 때문에, 모든 과제를 완벽하게 수행해야 한다는 부담에서 벗어날 수가 있다. 이 정책에서는 옆 친구와 경쟁할 필요도 없고 모든 것을 완벽하게 해낼 필요도 없기 때문에 과제를 스스로 수행했을 때 발생하는 불이익이 많이 줄어들게 된다. 또한, AI 일임함으로 가져가는 이익 또한 최소화한다(0 -> + 정도의 이익이다). 수업 첫 시간에 이를 설명하였다. 많은 학생들이 따라왔으면 하는 바람이다. PBL 취지에 공감한다면, 어떤 것이 정말로 본인에게 이익이 되는지 알아차릴 수 있을 것이다.
혹시라도 여기까지 읽은 학생이 위 PBL 학습 목표와 가이드라인에 동의한다면 내 수업을 수강해 보는 것을 권하고 싶다. 정식 수강 신청이 아니어도 좋고 다른 학교 학생이어도 좋다. 메일 등으로 알려만 주면 된다.
-
좀 더 구체적으로는 “meat proxy”가 되지 말라는 것이다. 문제를 그대로 복사하여 에이전트에 넘겨 결과를 보고, 오류가 난다면 그 오류 또한 에이전트에 복사 붙여 넣는 것을 반복하는 것을 말한다. AI를 이용하여 모르는 것을 질문하고, 개념에 학습하는 데 활용하는 것은 권장할 만하다. ↩︎
-
Code ownership means that you understand your submitted code well enough to explain how it works, defend its design, identify and fix problems, and make reasonable modifications to it. https://15445.courses.cs.cmu.edu/fall2026/faq.html ↩︎