Skip to main content
QUICK REVIEW

[논문 리뷰] Automated Correction for Syntax Errors in Programming Assignments using Recurrent Neural Networks

Sahil Bhatia, Rishabh Singh|arXiv (Cornell University)|2016. 03. 19.
Software Engineering Research참고 문헌 19인용 수 71
한 줄 요약

이 논문은 정확한 학생 제출물에서 유효한 토큰 시퀀스를 학습함으로써 학생 프로그래밍 과제의 문법 오류를 자동으로 복구 제안하는 RNN 기반 방법을 제안한다. 이 방법은 edX MOOC에서 14,000건 이상의 오류가 있는 제출물에서 31.69%의 완전 복구율과 6.39%의 부분 복구율을 달성하여, 딥 러닝을 사용해 이전에 간과된 오류 유형을 자동 피드백 시스템에서 해결할 수 있음을 입증한다.

ABSTRACT

We present a method for automatically generating repair feedback for syntax errors for introductory programming problems. Syntax errors constitute one of the largest classes of errors (34%) in our dataset of student submissions obtained from a MOOC course on edX. The previous techniques for generating automated feed- back on programming assignments have focused on functional correctness and style considerations of student programs. These techniques analyze the program AST of the program and then perform some dynamic and symbolic analyses to compute repair feedback. Unfortunately, it is not possible to generate ASTs for student pro- grams with syntax errors and therefore the previous feedback techniques are not applicable in repairing syntax errors. We present a technique for providing feedback on syntax errors that uses Recurrent neural networks (RNNs) to model syntactically valid token sequences. Our approach is inspired from the recent work on learning language models from Big Code (large code corpus). For a given programming assignment, we first learn an RNN to model all valid token sequences using the set of syntactically correct student submissions. Then, for a student submission with syntax errors, we query the learnt RNN model with the prefix to- ken sequence to predict token sequences that can fix the error by either replacing or inserting the predicted token sequence at the error location. We evaluate our technique on over 14, 000 student submissions with syntax errors. Our technique can completely re- pair 31.69% (4501/14203) of submissions with syntax errors and in addition partially correct 6.39% (908/14203) of the submissions.

연구 동기 및 목표

  • 대규모 온라인 프로그래밍 강좌에서 문법 오류가 학생 제출물의 34%를 차지함에도 불구하고 자동 피드백이 부족한 문제를 해결하기 위해.
  • 불완전한 프로그램에 대해 사용할 수 없는 추상구문트리(ASP)에 의존하지 않고도 문법 오류의 복구 제안을 생성할 수 있는 기법을 개발하기 위해.
  • 정확한 학생 제출물의 대규모 데이터를 활용해 문법적으로 유효한 토큰 시퀀스를 예측할 수 있는 시퀀스 모델을 훈련시키기 위해.
  • 문법 오류에 대해 자동으로 실시간 피드백을 제공함으로써 프로그래밍 교육의 접근성과 확장성을 향상시키기 위해.
  • 기능 정확성 외에도 코드의 구조를 모델링함으로써 RNN이 교육적 피드백에 활용될 잠재력을 탐색하기 위해.

제안 방법

  • 주어진 프로그래밍 과제의 모든 문법적으로 올바른 학생 제출물을 기반으로 RNN을 훈련하여 유효한 토큰 시퀀스의 언어 모델을 학습한다.
  • 문법 오류가 있는 학생 제출물의 경우, 오류 위치까지의 토큰 시퀀스 접두어를 RNN의 입력으로 사용하여 수정 가능한 토큰 시퀀스를 예측한다.
  • 예측된 토큰 시퀀스를 오류 위치에 대체하거나 삽입하여 후보 복구를 생성한 후, 컴파일러를 사용해 문법적 정확성을 검증한다.
  • 컴파일 가능한 프로그램을 생성하는 복구만 선택하여 학생에게 제안 수정안으로 반환한다.
  • 더 높은 복구 커버리지 확보를 위해 높은 확률을 가진 다수의 토큰 시퀀스 예측을 탐색하기 위해 빔 서치 전략을 사용한다.
  • 온라인 교육 플랫폼에서 수천 건의 학생 제출물을 처리할 수 있도록 확장 가능한 피드백 파이프라인에 모델을 통합한다.

실험 결과

연구 질문

  • RQ1정확한 학생 코드에서 학습한 시퀀스 모델이 오류가 있는 학생 제출물의 문법적 유효한 복구를 효과적으로 예측할 수 있는가?
  • RQ2RNN 기반 언어 모델이 실제 학생 구현물에서 유효한 코드 시퀀스의 문법 패턴을 어느 정도 학습할 수 있는가?
  • RQ3기존의 컴파일러 오류 메시지나 AST 기반 피드백 시스템에 비해 제안된 방법이 문법 오류 복구에 얼마나 효과적인가?
  • RQ4이 모델은 초급 프로그래밍 과제에서 다양하게 나타나는 학생의 코딩 스타일과 오류 패atters에 대해 일반화할 수 있는가?
  • RQ5복구 예측에 미래 토큰을 고려하지 않는 접두어 컨텍스트에만 의존하는 것이 성능에 미치는 제한은 무엇이며, 향후 모델은 어떻게 향후 컨텍스트를 통합하여 정확도를 향상시킬 수 있는가?

주요 결과

  • 제안된 RNN 기반 방법은 문법 오류가 있는 학생 제출물 14,203건 중 31.69% (4,501건)를 성공적으로 복구하여 높은 실용적 유용성을 입증했다.
  • 추가로 6.39% (14,203건 중 908건)의 제출물이 부분적으로 수정되어, 복잡하거나 다중 요소 오류를 처리할 수 있음을 시사한다.
  • 모델의 성능은 향후 토큰을 고려하지 못하는 접두어 컨텍스트에만 의존하기 때문에 제한을 받고 있으며, 이는 복구 정확도 향상에 기여할 수 있다.
  • 현재 시스템은 한 제출물 내 다중 문법 오류를 처리할 수 없으며, 한 오류를 수정해도 다른 오류가 남아 있을 수 있으므로 반복 적용이 필요하다.
  • 문법은 유효하지만 의미적으로 잘못된 수정을 생성할 위험이 있어, 향후 확장에서 추가적인 의미 검증이 필요하다는 점을 시사한다.
  • 이 방법은 edX, Coursera, Udacity와 같은 MOOC 플랫폼에 통합되어 초급 프로그래밍 과정의 자동 피드백을 확장하는 데 강력한 잠재력을 보인다.

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

연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.

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

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