Skip to main content
QUICK REVIEW

[논문 리뷰] Dcc --help: Generating Context-Aware Compiler Error Explanations with Large Language Models

Andrew Taylor, Alexandra Vassar|arXiv (Cornell University)|2023. 08. 23.
Software Engineering ResearchComputer Science인용 수 3
한 줄 요약

이 논문은 디버깅 C 컴파일러(DCC)에 대규모 언어 모델(LLM)을 통합하여 컴파일 시점 및 런타임 오류에 대해 맥락 인식형, 초보자 중심의 설명을 생성하는 오픈소스 도구 dcc --help를 소개한다. 소스 코드, 오류 위치, 표준 오류 메시지를 LLM에 프롬프트로 제공함으로써, 실질적인 조치를 취할 수 있는 자연어 가이던스를 생성한다. 이는 컴파일 시점 오류의 90%와 런타임 오류의 75%에서 개념적 정확도를 달성하였으며, 대규모 CS1/CS2 과정에서 높은 학생 사용률을 기록하였다.

ABSTRACT

In the challenging field of introductory programming, high enrollments and failure rates drive us to explore tools and systems to enhance student outcomes, especially automated tools that scale to large cohorts. This paper presents and evaluates the dcc --help tool, an integration of a Large Language Model (LLM) into the Debugging C Compiler (DCC) to generate unique, novice-focused explanations tailored to each error. dcc --help prompts an LLM with contextual information of compile- and run-time error occurrences, including the source code, error location and standard compiler error message. The LLM is instructed to generate novice-focused, actionable error explanations and guidance, designed to help students understand and resolve problems without providing solutions. dcc --help was deployed to our CS1 and CS2 courses, with 2,565 students using the tool over 64,000 times in ten weeks. We analysed a subset of these error/explanation pairs to evaluate their properties, including conceptual correctness, relevancy, and overall quality. We found that the LLM-generated explanations were conceptually accurate in 90% of compile-time and 75% of run-time cases, but often disregarded the instruction not to provide solutions in code. Our findings, observations and reflections following deployment indicate that dcc-help provides novel opportunities for scaffolding students' introduction to programming.

연구 동기 및 목표

  • 컴파일러 오류 메시지가 복잡하고 도움이 되지 않아 초보자 학습자가 프로그래밍 오류를 이해하고 해결하기 어려운 문제를 해결하여, 초급 프로그래밍(CS1) 과정의 높은 실패율과 이탈률을 낮추기 위해 의미 있는 오류 피드백에의 접근성을 향상시키는 것.
  • 초보자 학습자가 이해하고 해결하기 어려운 암호화된, 도움이 되지 않는 컴파일러 오류 메시지의 한계를 극복하는 것.
  • 기존의 교육 지원이 부족한 대규모 학생 집단에 맞춰 개인화되고 즉각적인 디버깅 지원을 스케일링하는 것.
  • 생성형 AI를 활용해 컴파일러를 수동적인 오류 보고자에서 맥락 인식형 활동적 학습 가이드로 전환하는 것.
  • 실제 교육 현장에서 수천 명의 학생을 대상으로 LLM 기반 설명의 타당성, 품질, 영향력을 평가하는 것.

제안 방법

  • GPT-3.5-turbo-0301을 사용하여 LLM을 DCC 컴파일러 파이프라인에 직접 통합하여 실시간 설명 생성 기능을 구현한다.
  • 소스 코드, 오류 위치, 원본 컴파일러 오류 메시지를 맥락 정보로 LLM에 프롬프트로 제공한다.
  • 직접적인 코드 수정 해결책을 제공하지 않고, 초보자 중심의 개념적이고 실천 가능한 설명을 생성하도록 지시한다.
  • 과도한 의존을 방지하고 비판적 사고를 장려하기 위해 빈도 제한 및 경고 기능을 구현한다.
  • 대규모 오스트레일리아 대학의 CS1 및 CS2 과정에 도구를 배포하여 학생들이 필요에 따라 설명을 즉시 접근할 수 있도록 한다.
  • 10주 동안 2,565명의 학생으로부터 64,000개의 오류/설명 쌍을 수집하고 분석하여 설명 품질과 사용 패턴을 평가한다.

실험 결과

연구 질문

  • RQ1LLM 기반 설명은 컴파일 시점 및 런타임 C 프로그래밍 오류에 대해 어느 정도 개념적으로 정확한가?
  • RQ2학생들은 실제로 dcc --help를 어떻게 사용하는가? 그리고 사용 빈도가 학업 마감일이나 난이도 수준과 관련이 있는가?
  • RQ3직접적인 코드 수정 해결책을 제공하지 않는 한에서, LLM 기반 설명은 초보자 프로그래머를 효과적으로 지원할 수 있는가?
  • RQ4이러한 도구의 인식된 영향과 측정 가능한 영향은 학생들의 학습 성과와 디버깅 자신감에 어떤가?
  • RQ5생성형 AI를 컴파일러에 통합함으로써 컴파일러의 역할은 오류 보고자에서 활동적 학습 지원자로 어떻게 변화하는가?

주요 결과

  • LLM 기반 설명은 컴파일 시점 오류의 90%와 런타임 오류의 75%에서 개념적으로 정확하였다.
  • 직접적인 코드 수정을 피할 것을 지시했음에도 불구하고, LLM은 빈번히 직접적인 코드 수정을 제공하여, 더 강력한 프롬프트 제약 조건이 필요함을 시사한다.
  • 10주 동안 2,565명의 학생이 총 64,000회 이상 도구를 사용하였으며, 주요 평가 마감일 직전에 사용 빈도가 급격히 증가하였다.
  • 학생들은 도구에 높은 참여도를 보였으며, 이는 도구가 유용하고 접근 가능한 학습 보조 수단으로 인식되었음을 시사한다.
  • 기말 시험에서 성능 저하가 관찰되지 않았으며, 이는 도구가 학습 성과를 떨어뜨리지 않았음을 의미한다.
  • 생성형 AI를 컴파일러에 통합함으로써 컴파일러의 역할은 수동적인 오류 보고자에서 능동적이고 맥락 인식형 학습 동반자로 변화하였으며, 대규모 학생 지원을 향상시켰다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.