논문을 리딩하고, 생각을 정리하기 위한 목적으로 작성되는 포스트입니다.
학문적 분석보다는 책을 읽고 서평을 남기듯 가볍게 작성하고 있습니다.
개인적으로 학습하며 기록하고 있기 때문에 잘못된 내용이 있을 수 있습니다. 잘못된 내용이 있다면 댓글로 알려주세요.
개요
- 날짜: 2021년 03월 9일 화요일
- 대상: 김덕엽, 서강복, 황재성, 이우진. (2020). 프로그래밍 실패 피드백 시스템을 위한 학습자 코드의 런타임 오류 분석. 한국정보과학회 학술발표논문집, (), 281-283.
읽게 된 계기
최근 GitHub
에서 새로운 오픈소스 프로젝트(파라미터가 존재하는 메소드를 테스트하기 위한 임의의 파라미터 생성기)에 기여하고 있다. 릴리즈 버전이 0.0.x인 매우 초창기 프로젝트로서 최소한의 기능만 제공하고 있다.
해당 프로젝트가 제공할 수 있는 추가적인 기능에 대해 연구하던 중 프로그래밍 채점 시스템, 온라인 저지 웹 사이트 등에서도 활용할 수 있을 것으로 판단하게 되었고, 소프트웨어 테스팅 기법과 관련된 자료를 찾아보고 읽게 되었다.
내용 분석
프로그래밍 학습자는 원활한 학습을 위해 자동 프로그래밍 채점 시스템이 포함된 온라인 저지 웹 사이트를 활용하고 있다. 이곳에 적용된 자동 프로그래밍 채점 시스템은 학습자의 소스 코드를 입력받아 사전에 작성해둔 테스트케이스(입력<->결과)를 바탕으로 채점을 수행한다.
채점 시스템은 채점 결과를 사용자에게 반환하는데, 일반적으로 문제에 대한 성공과 실패 정보만을 제공한다. 통과에 실패한 경우 학습자는 피드백 받은 채점 결과를 바탕으로 코드를 디버깅해야 하는데 제공되는 정보가 제한적이라 문제 해결에 어려움을 겪는다.
대상 논문에서는 프로그래밍 기초 학습자가 프로그래밍 채점 시스템에 제출한 소스 코드를 바탕으로 런타임 오류의 유형과 내용을 Data
,Interface
,Logic
,Syntax
,Other
로 분류하였다.
분석 결과 학습자들의 런타임 오류는 대부분 3개 Type(Data, Interface, Login), 9개의 오류 내용으로 나타났다. 각각의 오류에서 발생하는 원인을 식별할 수 있는 Features를 선별한다면 학습 효과를 높일 수 있을 것으로 기대한다.
생각
나 또한 프로그래밍 혹은 알고리즘 학습 목적으로 자동 프로그래밍 채점 시스템이 포함된 온라인 저지 웹 사이트를 이용해본 경험이 있다. 이때 경험할 수 있는 오류의 형태는 매우 다양했다.
- Compile Error: 개발 환경과 채점 환경의 차이로 인한 라이브러리 적재 실패
- Syntax Error: 비표준 문법 사용
- Runtime Error: 오버플로우, 배열 범위 초과, 무한루프
이러한 유형의 오류는 컴파일러가 명확하게 피드백해주고 있기에 자동 프로그래밍 채점 시스템에서도 적절한 피드백을 제공하고 있다. 그러나 Logic Error에 대한 피드백은 제한적인 상황이다.
해당 논문의 지적과 같이 런타임 오류 Type에 따른 Features를 분석하고 학습하는 피드백 시스템의 필요성과 가능성을 느낄 수 있었다.
또한 Type 분류 중 Data->변수 초기 값 설정 안 됨
케이스가 많은 비중을 차지하는 것을 보며 의아함을 느꼈다. 이 유형의 Error는 특별한 테스트 케이스가 없더라도 학습자가 자체적으로 검출할 수 있기 때문이다.
이를 통해 학습자들이 별도 IDE나 Editor에서 컴파일/테스트 과정을 거치지 않고 채점 시스템에서 곧장 소스 코드를 작성하고 제출하는 케이스가 상당수 존재한다고 추론해볼 수 있을 것 같다.