프로그래밍 과제 자동 생성 및 단위 테스트 기반 자동 채점 시스템
초록
본 논문은 하나의 통합 서술 형식으로부터 여러 프로그래밍 언어에 적용 가능한 과제를 자동으로 생성하고, 동일 플랫폼에서 단위 테스트 기반 자동 채점을 수행하는 도구를 제안한다. 교육용 LMS 간 이동성을 확보하고, 교사의 과제 제작 부담을 크게 경감한다는 점이 핵심이다.
상세 분석
이 연구는 교육용 코딩 과제의 설계·배포·채점 전 과정을 하나의 파이프라인으로 통합하려는 시도이다. 먼저 저자들은 “단일 서술(description) 언어”를 정의한다. 이 언어는 과제 목표, 입력·출력 형식, 제약 조건, 샘플 테스트 케이스, 그리고 정답 구현에 대한 메타 정보를 포함한다. 메타 정보는 JSON 혹은 YAML 형태로 기술되며, 언어 독립적인 구조를 갖는다.
다음 단계는 서술 파일을 파싱해 목표 언어별 템플릿을 자동 생성하는 ‘코드 생성 엔진’이다. 엔진은 목표 언어의 문법 규칙과 표준 라이브러리 매핑 테이블을 활용해, 함수 시그니처, 기본 구현 스켈레톤, 그리고 주석 형태의 힌트를 삽입한다. 이 과정에서 ‘다중 언어 매핑’이 핵심 역할을 하며, 동일 과제가 Python, Java, C++ 등 여러 언어로 동시에 제공될 수 있다.
채점 메커니즘은 전통적인 정답 비교가 아니라, 자동 생성된 단위 테스트 집합을 활용한다. 테스트 케이스는 서술 파일에 명시된 입력·출력 예시와, 교사가 추가로 정의한 경계·예외 상황을 포함한다. 실행 시 학생 코드는 격리된 샌드박스 환경에서 테스트 러너에 의해 호출되고, 성공·실패 여부와 함께 상세한 오류 메시지·스택 트레이스가 피드백으로 제공된다. 이는 ‘지능형 피드백’이라 불리며, 학생이 어느 부분에서 논리적 오류를 범했는지 구체적으로 알려준다.
플랫폼 간 이식성을 확보하기 위해 저자들은 LMS‑중립적인 API 스펙을 설계했다. 기존 LMS가 제공하는 LTI(Learning Tools Interoperability) 혹은 SCORM 표준을 그대로 활용하거나, 별도 플러그인 형태로 연동할 수 있다. 따라서 교사는 한 번의 서술 파일 작성만으로 다양한 LMS에 과제를 배포하고, 동일 채점 로직을 재사용할 수 있다.
실험에서는 3개의 대학 강의(프로그래밍 입문, 자료구조, 알고리즘)에서 120개의 과제를 자동 생성·채점했으며, 교사의 평균 제작 시간은 15분에서 2분으로 87% 감소하였다. 채점 정확도는 기존 정답 기반 자동 채점과 비교해 99.3% 일치했으며, 학생 만족도 설문에서는 피드백의 구체성에 대해 4.6/5점을 받았다.
한계점으로는 복잡한 UI 기반 과제나, 비정형 입력(예: 파일 스트림) 처리에 대한 자동 생성이 아직 미흡하다는 점이다. 또한, 테스트 케이스 설계가 부실하면 오히려 학습 효과가 저하될 수 있어, 교사의 검증 단계가 필요하다. 향후 연구에서는 정적 분석·동적 분석을 결합한 하이브리드 채점, 그리고 AI 기반 자동 테스트 케이스 생성 모델을 도입해 보다 포괄적인 과제 유형을 지원하고자 한다.
댓글 및 학술 토론
Loading comments...
의견 남기기