[논문 리뷰] Conversing with Copilot: Exploring Prompt Engineering for Solving CS1 Problems Using Natural Language
이 연구는 GitHub Copilot이 166개의 CS1 프로그래밍 문제에서의 성능을 평가하며, 원본 프ompt를 사용할 때 50%가 첫 시도에 해결되며, 나머지 50% 중 60%는 자연어 프ompt 엔지니어링을 통해 해결된다는 것을 발견했다. 결과적으로, 문제 설명을 알고리즘 힌트로 다듬는 프ompt 엔지니어링은 도구적 가치가 높고, 초보자 프로그래밍 교육에서 계산적 사고를 촉진하는 데 매우 효과적인 상호작용 방식임을 시사한다.
GitHub Copilot is an artificial intelligence model for automatically generating source code from natural language problem descriptions. Since June 2022, Copilot has officially been available for free to all students as a plug-in to development environments like Visual Studio Code. Prior work exploring OpenAI Codex, the underlying model that powers Copilot, has shown it performs well on typical CS1 problems thus raising concerns about the impact it will have on how introductory programming courses are taught. However, little is known about the types of problems for which Copilot does not perform well, or about the natural language interactions that a student might have with Copilot when resolving errors. We explore these questions by evaluating the performance of Copilot on a publicly available dataset of 166 programming problems. We find that it successfully solves around half of these problems on its very first attempt, and that it solves 60\% of the remaining problems using only natural language changes to the problem description. We argue that this type of prompt engineering, which we believe will become a standard interaction between human and Copilot when it initially fails, is a potentially useful learning activity that promotes computational thinking skills, and is likely to change the nature of code writing skill development.
연구 동기 및 목표
- GitHub Copilot이 자연어 프ompt만을 사용하여 초보자 프로그래밍 문제를 얼마나 잘 해결하는지 평가하기.
- 프ompt 엔지니어링을 통해 문제 설명을 수정하면, 초기 실패 이후 Copilot의 성공률이 얼마나 향상되는지 조사하기.
- 프ompt 엔지니어링 노력에도 불구하고 해결되지 않는 문제들의 공통적인 특성 파악하기.
- Copilot과 같은 AI 페어 프로그래밍 도구와의 상호작용 전략으로서 프ompt 엔지니어링의 교육적 함의 탐색하기.
- 빠른 모델 발전에 비춰, 공개된 CS1 문제 데이터셋에 대한 Copilot의 현재 성능 기준선 설정하기.
제안 방법
- CodeCheck의 파이썬 문제 뱅크에서 유래한 공개된 166개의 CS1 프로그래밍 문제 데이터셋에 대해 Copilot의 성능 평가.
- 초기 성능 기준선을 확보하기 위해 원본 문제 설명을 그대로 사용하여 Copilot 테스트.
- 초기 실패한 문제들에 대해 반복적인 자연어 프ompt 엔지니어링 적용 — 알고리즘 힌트 추가, 제약 조건 명확화, 문제 서술 재구성.
- 실패 패턴 기반 문제 분류: 부적절한 프om프트, 번거로운 프om프트(패턴), 개념적 문제 분석 — 프om프트의 구조성과 명확성 분석.
- 정량적 및 정성적 분석을 통해 프om프트 수정이 해결 정확도에 미치는 영향 평가.
- 기본 모델인 Codex의 비결정적 동작을 고려하여 다수의 시험에서 결과 복제.
실험 결과
연구 질문
- RQ1RQ1: 원본 문제 설명을 사용할 때 Copilot이 공개된 CS1 프로그래밍 문제 레포지터리에서 얼마나 잘 작동하는가?
- RQ2RQ2: 초기 실패 이후, 문제 설명에 자연어 수정을 가하면 얼마나 높은 확률로 성공적인 해결이 이루어지는가?
- RQ3RQ3: 프om프트 엔지니어링을 합리적으로 시도한 후에도 해결되지 않는 문제들 사이에는 어떤 공통점이 있는가?
- RQ4RQ4: AI 페어 프로그래밍 도구(예: Copilot)와의 상호작용 전략으로서 프om프트 엔지니어링의 교육적 함의는 무엇인가?
주요 결과
- Copilot은 원본 문제 설명을 사용해 166개의 CS1 문제 중 50%를 첫 시도에 성공적으로 해결했다.
- 초기 실패한 나머지 50% 문제 중 60%는 자연어 프om프트 엔지니어링을 통해 성공적으로 해결되었으며, 주로 알고리즘 힌트를 추가함으로써 달성됨.
- 프om프트 엔지니어링은 패턴 유도, 문자열 조작, 개념적 추론을 포함한 모든 문제 유형에서 효과적이었다.
- 귀납적 추론이나 암묵적 패턴 인식이 필요한 문제들은 초기 실패 확률이 높았지만, 더 명확하고 체계적인 프om프트로 개선 가능했다.
- 세 가지 실패 유형을 식별함: 부적절한 프om프트(모호하거나 불완전한 서술), 번거로운 프om프트(과도하게 복잡하거나 중복된 지시), 개념적 문제(경계 케이스나 제약 조건에 대한 명확성 부족).
- 기본 모델인 Codex의 비결정적 성향에도 불구하고 반복 평가에서 일관된 성공률를 관찰하여, 연구 결과가 현재 기준선으로서 신뢰할 수 있음을 뒷받침함.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.