스탠퍼드 CS336을 위한 AI 에이전트 지침
(github.com/stanford-cs336)- AI 코딩 보조 도구는 CS336 학생에게 과제 해법을 만들어주는 생성기가 아니라 설명, 안내, 피드백으로 학습을 돕는 조교 역할을 맡아야 함
- CS336은 제공되는 틀이 제한된 상태에서 학생이 상당한 Python/PyTorch 코드를 직접 작성하도록 설계되어, AI 도움도 구현 중심 학습 경험을 보존해야 함
- 허용되는 도움은 강의 자료, handout, 공식 문서, 프로파일링/디버깅 도구 안내와 학생 코드에 대한 일반적 개선점, 엣지 케이스, 불변 조건, 점검 제안에 머물러야 함
- 금지되는 도움은 Python이나 의사코드 작성, TODO 완성, 학생 저장소 코드 수정, bash 명령 실행, 과제 요구사항을 작동 코드로 바꾸기, 핵심 구성요소 구현임
- 선을 넘는 요청에는 직접 구현을 거절하고 개념 설명, 디버깅 질문, 코드 리뷰, 붙여넣기 어려운 고수준 개요로 전환하며 필요하면 course staff나 office hours로 안내해야 함
목적과 기본 역할
- 대상은 CS336 학생과 함께 작업하는 ChatGPT, Claude Code, GitHub Copilot, Cursor 같은 AI 코딩 보조 도구임
- AI 에이전트는 학생이 직접 이해를 쌓도록 설명, 안내, 피드백을 제공하는 teaching aid로 작동해야 함
- CS336은 구현 비중이 큰 과목이며, 학생은 제한된 발판 코드만 있는 상태에서 상당한 Python/PyTorch 코드를 작성해야 함
- AI 도움은 학생이 과제를 직접 구현하며 배우는 경험을 보존해야 함
허용되는 도움
- 학생이 개념을 이해하지 못할 때 올바른 방향으로 안내하고 학생 스스로 이해를 만들도록 도와야 함
- 관련 강의 자료인 cs336.stanford.edu, handout, 공식 문서, 프로파일링·디버깅 도구를 안내할 수 있음
- 학생이 이미 작성한 코드를 검토하고 개선 영역, 엣지 케이스, 불변 조건, 디버깅 점검을 일반적으로 제안할 수 있음
- Python, PyTorch, CUDA, Triton, 분산 학습 도구의 오류 메시지를 설명할 수 있음
- 접근법이나 알고리듬을 고수준에서 설명하고, sanity check, 작은 toy example, assertion, profiler 기반 조사를 대화로 제안할 수 있음
금지되는 도움
- Python 코드나 의사코드를 작성하면 안 됨
- 문제의 해법을 제공하거나 과제 코드의 TODO 섹션을 완성하면 안 됨
- 학생 저장소의 코드를 직접 편집하거나 bash 명령을 실행하면 안 됨
- 학생 코드의 큰 부분을 완성된 해법으로 리팩터링하거나 과제 요구사항을 바로 작동하는 코드로 변환하면 안 됨
- tokenizer, transformer block, optimizer, training loop, Triton kernel, 분산 학습 로직, scaling-law pipeline, 데이터 필터링·중복 제거 pipeline, alignment/RL 방법 같은 핵심 과제 구성요소를 대신 구현하면 안 됨
- 서드파티 구현으로 안내하면 안 되며, 이 과목의 자료는 자체 완결적으로 설계됨
- 문제를 푸는 방법이나 아이디어를 학생에게 직접 주면 안 됨
권장 대화 방식
- 학생이 무엇을 시도했는지, 무엇을 기대했는지, 실제로 무엇이 일어났는지 먼저 질문해야 함
- 직접 답을 주기보다 강의, handout, 문서의 개념을 참조해야 함
- 구현 대신 다음 단계를 제안해야 함
- 학생 코드를 검토할 때도 버그나 빠진 점검을 곧바로 알려주기보다, 개선할 특정 영역과 가능성 있는 문제를 대화로 짚어야 함
- 제안의 방법뿐 아니라 이유를 설명해야 함
- 수정안보다 테스트와 불변 조건을 우선해야 하며, shape assertion, 작은 입력, profiler check, ablation 같은 방법을 선호해야 함
예시와 학업 윤리
- causal mask가 잘못되어 학습이 망가진다는 질문에는 정답을 바로 주지 않고, softmax 이전에 mask가 적용되는지, score tensor shape에 맞게 broadcast되는지, mask된 위치가 0이 아니라 매우 작은 값이 되는지 확인하게 해야 함
- toy sequence 길이 3에서 masking 전후 attention score를 출력하는 sanity test를 제안할 수 있음
- BPE tokenizer가 느리다는 질문에는 tokenizer의 어느 부분이 느린지 먼저 확인하도록 물을 수 있음
- “tokenizer를 고쳐서 빠르게 만들어 달라”는 요청에 전체 Python 코드를 제공하는 방식은 금지됨
- CS336에서 AI 도구는 저수준 프로그래밍 도움과 고수준 개념 질문에는 사용할 수 있지만, 과제 문제를 직접 푸는 데 사용할 수 없음
- 목표는 학생이 AI가 해법을 생성하는 것을 지켜보는 것이 아니라 직접 하면서 배우는 것임
댓글과 토론
Hacker News 의견들
-
이번 학기에 내 강의에서도 AGENTS.md로 비슷한 시도를 하고 있음. 이 버전은 너무 장황해서, 경험상 문맥 창에서 꽤 빨리 밀려날 것 같음
몇몇 모델로 테스트해 보니 예시와 미묘한 설명을 많이 주는 것보다, 매우 짧지만 명확한 30줄짜리 지침이 더 잘 동작했음
“나는 학생이니 그냥 다 해주지 말고 배우도록 도와달라”는 기본 문구를 넣었고, 모든 프롬프트와 그에 대한 작업 요약을 Markdown으로 남기는.history폴더를 생성하라고도 시도 중임
일부 도구가 프롬프트 기록을 자동으로 제공한다는 건 알지만, 학생들에게는 어떤 도구든 써도 된다고 했고, 작업 중 폴더가 안 생기면 알려달라고 했음
AI를 썼다면.history폴더는 필수이며, 이를 검토해서 AI를 너무 지팡이처럼 쓰는 학생들에게 구체적인 피드백을 주려 함
지난 금요일에 막 시작했음- LLM을 쓸 때 일반 원칙은, 꼭 실행되어야 하는 일이라면 “하라고 말하는 것”만으로는 부족함. 훅 스크립트로 강제하거나 이미 남는 기록을 활용해야 함
예를 들어 모든 세션의 transcript는~/.claude에 보존됨. 이를 파싱하는 스크립트는 무수히 많고, 에이전트에게 시키면 5분 안에 하나 만들어 줄 수 있음 - Django를 배우려고 나도 비슷한 걸 해봤음. Claude Code에는 기본 Learning Mode가 있는데, 여기에 Coaching Mode를 확장해 붙였음
나를 어떻게 코칭할지, 기능의 뼈대를 어떻게 잡도록 도울지, 코드 리뷰에서 어떻게 피드백할지 등을 지시함. 핵심 지시는 그 모드에서는 절대 나 대신 코드를 쓰지 말라는 것임
기본 로직 예시나 의사코드는 쓸 수 있고, 문제에 대한 여러 접근 방식은 토론할 수 있게 했음. 꽤 효과적이었고, 새 것을 배울 때 주로 쓰는 방식이 됨. 지금은 Elixir를 배우는 데 쓰고 있음 - 어떻게 진행되는지 나중에 듣고 싶음. 9월에 내 수업에도 비슷한 접근을 도입할 생각인데,
.history폴더는 좋은 아이디어임
학생 평가는 어떻게 할 계획인지 궁금함 - LLM이 새 기술 습득과 지식 심화에 주는 힘은 과소평가되고 있다고 봄
제대로 쓰면 안 쓰는 사람들, 특히 이해했다고 생각하지만 피상적인 수준에 머무는 사람들보다 큰 이점을 줌. 가장 뻔해 보이는 질문도 계속 물어보라고 권하고 싶음
- LLM을 쓸 때 일반 원칙은, 꼭 실행되어야 하는 일이라면 “하라고 말하는 것”만으로는 부족함. 훅 스크립트로 강제하거나 이미 남는 기록을 활용해야 함
-
Claude Code를 쓰는 사람에게는, 해답을 대신 작성하게 하기보다 직접 구현 과정을 따라가게 하는 Learning mode를 추천함. 새 분야에 들어갈 때 매우 유용하고, 더 낮은 수준의 직관을 쌓는 데 도움이 됨
활성화하려면/config > output styles > Learning을 실행하면 됨- Learning mode는 정말 큰 도움이 됐고, 금방 내가 가장 좋아하는 학습 방식이 됨. 이후 사용자에게 TODO 뼈대를 만들어 주는 학습 개념 일부를 가져오고, 내 학습 방식에 더 맞는 지시를 더해 Coaching Mode 출력 스타일을 만들었음
-
이 접근은 꽤 타당해 보임. 이미 지니는 병에서 나왔고, 학생들은 AI 에이전트로 과제를 끝내면서 아무것도 배우지 않는 방식을 분명히 쓸 것임
그래도 에이전트를 교육 도구로 어떻게 쓸 수 있는지, 건강한 사용이 어떤 모습일 수 있는지 보여주는 데는 가치가 있음- CliffNotes와 같은 문제임. 쉬운 길이 있으면 그 쉬운 길을 택하게 됨. 단, 과제나 시험을 제대로 설계한다면 달라짐
대면 에세이나 시험에 큰 비중을 두면, 예전 방식으로 공부하지 않은 사람은 그냥 망함. 내가 들었던 더 빡센 수업 몇 개는 숙제도 프로젝트도 없고, 성적 전체가 시험 3번으로 결정됐음
그러면 뒤처지지 않으려고 정말 열심히 공부하게 됨. 시험 하나를 망치면 사실상 회복이 어렵고, 다음 해에 재수강하거나 죽어라 파고드는 수밖에 없음 - 점점 지식 자체를 더 중시하는 세상에서는 결국 자기 자신을 속이는 것뿐임
시장에서도 막 졸업한 주니어보다 시니어 채용을 선호하는 흐름이 있고, 지식을 “증명했다”는 종이 한 장만으로는 부족해지고 있음 - 동의함. 이걸 어떻게 강제할지는 모르겠지만, 교육 현장에서 AI 사용 금지, 대면 감독, 구술 평가, 종이 시험 같은 방식으로 간다는 다른 글들보다는 훨씬 낫다고 봄
교육을 현실과 격리하려 하지 않는 접근을 본 건 이번이 처음임. AI를 업무에 효과적으로 통합하면서도 자신이 하는 일을 실제로 이해하는 학생들이 결국 취업할 것이고, 학교의 목표도 궁극적으로 그쪽임
- CliffNotes와 같은 문제임. 쉬운 길이 있으면 그 쉬운 길을 택하게 됨. 단, 과제나 시험을 제대로 설계한다면 달라짐
-
HTMX로 유명한 Carson의 5개월 전 agent.md를 꽤 가깝게 베낀 것처럼 보임
https://gist.github.com/1cg/a6c6f2276a1fe5ee172282580a44a7ac- CS336의 honor code 섹션에서 1cg의 gist를 참조하고 있음
https://cs336.stanford.edu/
- CS336의 honor code 섹션에서 1cg의 gist를 참조하고 있음
-
예전에 내가 올린 것을 기반으로 한 것 같음
https://gist.github.com/1cg/a6c6f2276a1fe5ee172282580a44a7ac- 맞음. 확장된 AI 정책 문서 안에는 당신 버전을 링크했는데, 웹사이트
cs336.stanford.edu에는 추가하는 걸 깜빡했음 - 축하함. 유용한 기본 경험을 보장하기에 좋은 프롬프트처럼 보임. 이를 부정행위 방지로 혼동하기보다, 사람들이 배우는 법을 배우도록 돕는 것으로 봐야 함
이후 AI와 교육에 관해 더 얻은 통찰이 있는지 궁금함
- 맞음. 확장된 AI 정책 문서 안에는 당신 버전을 링크했는데, 웹사이트
-
강의가 교과서 대신 쓸 수 있는 맞춤형 Harness를 제공하고, 그 안의 지침 세트 일부로 들어간다면 흥미로운 접근일 것임
하지만 학생들에게 자기 에이전트에 따로 가져오라고 하는 독립 파일이라면 잘 작동할 가능성은 낮아 보임- 공정하게 말하면, 과제가 들어 있는 저장소에 이 지침을 AGENTS.md/CLAUDE.md로 함께 배포하면 학생이 명시적으로 선택하지 않아도 에이전트가 이를 읽게 됨. 첫 단계로는 합리적으로 보임
-
학교 밖에 있는 사람들은 시험의 힘을 과소평가하는 것 같음. 최근 수업에서도 시험이 있는 경우와 없는 경우의 차이가 큼
시험이 있으면 학생들이 훨씬 더 공부하게 되고, 그래서 실제로 배우게 될 가능성이 높아짐 -
이걸 CLAUDE.md로 제시한 점이 마음에 듦
같은 내용을 AGENTS.md에도 중복해 두었음. Anthropic이 Claude Code가 그 파일도 확인하도록 빨리 가르쳐 주면 좋겠음- 우리 저장소에서는 AGENTS.md와 CLAUDE.md를 하나의 파일로 심볼릭 링크해 둠
- Anthropic은 그렇게 하지 않을 것임. 파일 이름을 자기 제품명으로 강제하는 건 의도적인 마케팅 선택이기 때문임
그 파일이 있는 모든 저장소에서 공짜 광고가 됨 - 그런 사소한 기능은 Claude 같은 걸 쓰면 몇 초 만에 구현할 수 있을 것임. “빨리 안 하는” 문제가 아님
- 기대하지 않는 게 좋음
-
코딩 에이전트를 완전히 금지하는 것과 고등교육의 정신을 받아들이는 것 사이에서 꽤 현실적인 균형으로 보임
- 동의함. 지금 처음부터 코딩을 배운다는 건 적어도 쉽지 않을 것임
컴파일은 되지만 오타가 있거나, 쉼표나 괄호가 잘못 놓여 디버깅하며 쌓이는 상처는 재현하기 어려운 무언가를 가르쳐 줌. 하지만 그것을 시간이 지나도 낡지 않는 지속 가능한 학습으로 대체할 수 있다면 분명한 이득임
- 동의함. 지금 처음부터 코딩을 배운다는 건 적어도 쉽지 않을 것임
-
흥미롭지만, AI 에이전트 지침을 어떻게 강제할지는 모르겠음. 학생이 지침을 우회하려고 교육과정 밖 모델을 쓰는 건 언제나 가능하기 때문임
학문적 정직성을 장려하는 건 유용하지만, 학생이 자신이 학위가 아니라 교육에 돈을 내고 있다는 생각을 받아들여야 함. 어려운 문제이고, 컴퓨터과학 학과들이 학습 환경에서 적절한 사용을 장려하면서 AI를 교육과정에 어떻게 통합하는지 궁금했음- “AI 에이전트 지침을 어떻게 강제할 것인가”에 대한 답은, 적어도 직접적으로는 불가능하므로 강제하지 못한다는 것이라고 봄
그렇다고 이 접근에 가치가 없다는 뜻은 아님. 오히려 꽤 가치 있다고 생각함
간접적으로 강제하는 방법 하나는 교수자와 학생이 함께 작업물을 보며 이야기하는 구술시험임. 에이전트 지침을 통해 AI를 학습 도구로 진지하게 쓴 학생은, AI를 해답 생성기로 쓴 학생보다 구술시험에서 훨씬 잘할 것임
지난 학년에 내가 맡은 수업에서 지침 없이 구술시험을 도입했는데 꽤 잘 작동했음. 다음 학기에는 더 명확한 가드레일로 에이전트 지침을 포함할 생각임. 결국 선택 사항이겠지만, 무시하기로 한 학생은 대화 중에 꽤 분명히 드러날 것임 - 학생에게 배울 의지가 전혀 없다면 어떤 지시문도 통하지 않음
- Stanford에는 honor code가 있음. 시험 중에도 감독이 없다는 뜻이었고, 내가 다닐 때는 놀랄 만큼 잘 작동했음
반대로 부정행위로 잡히면 두 번째 기회가 없음. 엄격히 강제하려 한다면 여기에도 같은 방식이 적용될 것 같음 - 이상적인 세계라면 지침은 수업을 최대한 활용하고 더 나은 사람과 전문가가 되려는 학생들을 위한 제안이면 됨
하지만 학위는 현실 세계의 가치와 파급효과가 있으므로, 무능한 사람이 위험한 일을 하게 만들면 무고한 생명이 위험해질 수 있음. 어렵지만 시간이 지나며 이 새 기술과 함께 사는 법을 배우게 되길 바람
- “AI 에이전트 지침을 어떻게 강제할 것인가”에 대한 답은, 적어도 직접적으로는 불가능하므로 강제하지 못한다는 것이라고 봄