When learning to program, students are usually assessed based on the code they wrote. However, the mere completion of a programming task does not guarantee actual comprehension of the underlying concepts. Asking learners questions about the code they wrote has therefore been proposed as a means to assess program comprehension. As creating targeted questions for individual student programs can be tedious and challenging, prior work has proposed to generate such questions automatically. In this paper we generalize this idea to the block-based programming language Scratch. We propose a set of 30 different questions for Scratch code covering an established program comprehension model, and extend the LitterBox static analysis tool to automatically generate corresponding questions for a given Scratch program. On a dataset of 600,913 projects we generated 54,118,694 questions automatically. Our initial experiments with 34 ninth graders demonstrate that this approach can indeed generate meaningful questions for Scratch programs, and we find that the ability of students to answer these questions on their programs relates to their overall performance.
- 논문 ID: 2510.11658
- 제목: Scratch 프로그램에 대한 질문 자동 생성
- 저자: Florian Obermüller, Gordon Fraser
- 분류: cs.SE (소프트웨어 공학)
- 발표 시간/학회: CompEd 2025 (ACM 글로벌 컴퓨팅 교육 학회 2025)
- 논문 링크: https://arxiv.org/abs/2510.11658
프로그래밍 학습에서 학생들은 일반적으로 자신이 작성한 코드를 기반으로 평가받습니다. 그러나 프로그래밍 과제를 완료하는 것만으로는 기본 개념에 대한 진정한 이해를 보장할 수 없습니다. 따라서 학습자에게 자신의 코드에 관한 질문을 제시하여 프로그램 이해 능력을 평가하는 방법이 제안되었습니다. 각 학생 프로그램에 대해 맞춤형 질문을 만드는 것이 번거롭고 어렵기 때문에, 선행 연구에서는 이러한 질문을 자동으로 생성하는 방법을 제안했습니다. 본 논문은 이 아이디어를 블록 기반 프로그래밍 언어인 Scratch로 확장합니다. 우리는 확립된 프로그램 이해 모델을 포괄하는 30가지 유형의 Scratch 코드 질문을 제안하고, LitterBox 정적 분석 도구를 확장하여 주어진 Scratch 프로그램에 대한 해당 질문을 자동으로 생성합니다. 600,913개 프로젝트를 포함하는 데이터셋에서 우리는 54,118,694개의 질문을 자동으로 생성했습니다. 34명의 9학년 학생을 대상으로 한 초기 실험에서 이 방법이 Scratch 프로그램에 대한 의미 있는 질문을 생성할 수 있으며, 학생들의 이러한 질문에 대한 답변 능력이 전체 성과와 관련이 있음을 보여줍니다.
본 연구가 해결하고자 하는 핵심 문제는 학생이 작성한 Scratch 프로그램이 올바르게 실행되는지 확인하는 것뿐만 아니라, 학생이 자신의 프로그램을 얼마나 잘 이해하고 있는지를 효과적으로 평가하는 방법입니다.
- 이해와 구현의 격차: 학생들은 시행착오, 복사 또는 AI 보조를 통해 프로그래밍 과제를 완료할 수 있지만, 기본 프로그래밍 개념을 진정으로 이해하지 못할 수 있습니다.
- 평가 방법의 한계: 전통적인 평가 방법은 주로 코드의 정확성에 초점을 맞추며, 학생의 프로그램 이해 능력에는 초점을 맞추지 않습니다.
- 규모 확장의 어려움: 대규모 교육 환경에서 교사는 각 학생의 프로그램에 대해 개인화된 이해 평가 질문을 수동으로 작성하기 어렵습니다.
- 텍스트 언어의 한계: 기존의 질문 생성 방법은 주로 Java와 같은 텍스트 프로그래밍 언어를 대상으로 하며, Scratch와 같은 블록 프로그래밍 언어에는 적용되지 않습니다.
- 언어 특성의 차이: Scratch에서 변수는 선언문이 아닌 사용자 인터페이스를 통해 생성되며, 블록은 줄 번호로 참조할 수 없습니다.
- 체계성 부족: 이론적 프레임워크를 기반으로 한 체계적인 질문 설계 방법이 부족합니다.
본 논문의 연구 동기는 기존의 "학습자 코드에 관한 질문(Questions about Learner's Code, QLCs)" 개념을 Scratch 환경으로 확장하여 블록 프로그래밍 교육에 자동화된 프로그램 이해 평가 도구를 제공하는 것입니다.
- 체계적인 질문 설계: Block Model 프로그램 이해 모델을 기반으로 Scratch 코드에 대한 30가지 질문 유형을 체계적으로 설계했습니다.
- 도구 확장: 오픈소스 정적 분석 도구인 LitterBox를 확장하여 Scratch 프로그램의 이해 질문을 자동으로 생성할 수 있게 했습니다.
- 대규모 검증: 600,913개의 공개 Scratch 프로젝트를 포함하는 데이터셋에서 방법의 적용 가능성을 검증했습니다.
- 실증 연구: 34명의 9학년 학생을 대상으로 한 교실 실험을 통해 질문의 효과성과 학생의 답변 성과와 프로그래밍 능력 간의 상관관계를 검증했습니다.
입력: Scratch 프로그램 프로젝트
출력: 해당 프로그램에 관한 자동 생성된 이해 질문 집합(질문 텍스트, 답변 선택지, 정답 포함)
제약 조건: 질문은 프로그램에 실제로 존재하는 코드 구조를 기반으로 해야 하며, Block Model의 이론적 프레임워크를 준수해야 합니다.
Block Model은 네 가지 수준의 관심 범위와 세 가지 프로그램 차원으로 구성됩니다:
| 수준 | 텍스트 차원 | 실행 차원 | 목적 차원 |
|---|
| 원자 수준 | 언어 요소 | 요소 작동 | 요소 목적 |
| 블록 수준 | 구문/의미 관련 영역 | 코드 블록 작동 | 코드 블록 기능 |
| 관계 수준 | 코드 블록 간 참조 | 코드 블록 간 흐름 | 목표와 부목표 관계 |
| 거시 수준 | 프로그램 전체 구조 | 알고리즘 또는 프로그램 동작 | 프로그램 목표 또는 목적 |
Block Model을 기반으로 30가지 질문 유형을 설계했으며, 5가지 답변 형식으로 분류됩니다:
- 숫자형(🔢): 답변이 단일 숫자
- 문자열형(📝): 답변이 하나 이상의 문자열
- 참/거짓형(✓/✗): 답변이 예 또는 아니오
- 다중선택형(☑️): 선택지에서 정답 선택
- 자유 텍스트형(📄): 개방형 질문으로 설명 필요
LitterBox 도구 확장을 통해 구현됩니다:
- AST 파싱: Scratch 프로그램을 추상 구문 트리로 변환
- 방문자 패턴: 각 질문 유형에 대해 질문 파인더 구현
- 코드 순회: AST를 순회하여 질문 생성 가능한 코드 패턴 식별
- 선택지 생성: 다중선택형 문제에 대해 방해 항목 자동 생성
- 블록 프로그래밍 적응: QLCs 개념을 블록 프로그래밍 언어에 처음으로 체계적으로 적용
- 이론 기반 설계: 성숙한 프로그램 이해 이론 프레임워크를 기반으로 질문 유형 설계
- 자동화 생성: 완전히 자동화된 질문 생성 프로세스 구현
- 다차원 커버리지: 기본 언어 요소부터 프로그램 전체 목적까지 다양한 수준의 질문 포함
- 대규모 데이터셋: 600,913개의 공개 Scratch 프로젝트(빈 프로젝트 및 혼합 프로젝트 제외)
- 교실 실험 데이터: Scratch 프로그래밍 경험이 있는 독일 9학년 학생 34명
- 스캐폴딩 프로젝트: 교실 실험의 기초 프로젝트로 Boat Race 게임 사용
- 질문 생성 빈도: 각 질문 유형의 총 생성 수 및 프로젝트 커버리지
- 상관관계 분석: 학생의 답변 성과와 프로그래밍 과제 완료도의 Pearson 상관계수
- 커버리지 분석: Block Model 각 차원의 프로젝트 커버리지 백분율
Scratch를 대상으로 한 QLCs 연구가 처음이므로, 다음 방식으로 검증합니다:
- 기존 텍스트 언어 QLCs와의 개념 비교
- 이론적 프레임워크를 기반으로 한 체계적 검증
- 실제 교육 환경에서의 적용 검증
- 도구 확장: LitterBox 정적 분석 도구 기반
- 출력 형식: JSON 형식으로 ScratchBlocks 구문의 코드 조각 포함
- 질문 표시: 대상 코드 부분 강조 표시(그림 1a 참조)
- 채점 메커니즘: 다중선택형은 각 정답 선택 0.2점, 단일선택형은 정답 1점
- 전체 통계: 600,913개 프로젝트에서 54,118,694개의 질문 생성
- 최고 빈도 질문:
- Purpose of Script: 9,748,844회(100% 프로젝트 커버리지)
- Purpose of If Condition: 5,103,322회(41.1% 프로젝트 커버리지)
- Scripts for Actor: 3,524,268회(100% 프로젝트 커버리지)
- 최저 빈도 질문:
- My Block Definition: 368,712회(11.3% 프로젝트 커버리지)
- Purpose of Loop Condition: 486,902회(15.2% 프로젝트 커버리지)
| 차원 | 원자 수준 | 블록 수준 | 관계 수준 | 거시 수준 |
|---|
| 텍스트 | 64.5% | 61.2% | 46.5% | 100.0% |
| 실행 | 30.4% | 58.4% | 99.0% | 71.1% |
| 목적 | 49.0% | 100.0% | 31.2% | 100.0% |
- 상관계수: r = 0.467 (p = 0.005)
- 상관관계 강도: 중간 정도의 양의 상관관계
- 통계적 유의성: p < 0.01, 통계적으로 유의함
- 실제 의미: 학생의 QLCs 답변 능력이 프로그래밍 과제 완료도와 유의미하게 관련됨
- 보편성 검증: 30가지 질문 유형 모두 실제 프로젝트에서 빈번하게 생성됨
- 계층적 특성: 높은 수준의 질문(예: 프로그램 목적)은 거의 모든 프로젝트에서 생성 가능하며, 낮은 수준의 질문은 특정 프로그래밍 구조에 따라 달라짐
- 효과성 증명: QLCs가 프로그램 이해 능력의 유효한 지표로 사용될 수 있음
- 교육적 가치: 학생의 선행 지식 결함을 감지하는 데 사용 가능
- 프로그램 이해 평가: 전통적 방법은 주로 코드 추적, 해석 및 작성 기술에 초점
- 자동 질문 생성: Java 등 텍스트 언어를 대상으로 한 자동 질문 생성 도구 기존
- 블록 프로그래밍 교육: Scratch가 프로그래밍 입문 언어로 광범위하게 사용됨
- 이론적 계승: 성숙한 프로그램 이해 이론 프레임워크인 Block Model 채택
- 기술적 확장: 기존 QLCs 개념을 블록 프로그래밍 언어에 처음 적용
- 도구 혁신: LitterBox 도구를 기반으로 Scratch 자동 질문 생성 구현
- 언어 적응성: 블록 프로그래밍 언어의 특성을 고려한 전문적 설계
- 체계적 완전성: 이론적 프레임워크를 기반으로 한 체계적 질문 설계
- 실용성: 대규모 데이터 검증 및 실제 교실 적용
- 기술적 가능성: Scratch 프로그램에 대해 자동으로 대량의 의미 있는 이해 질문 생성 가능
- 교육적 효과성: 생성된 질문이 학생의 프로그램 이해 능력을 효과적으로 평가할 수 있음
- 실용적 가치: Scratch 교육을 위한 확장 가능한 자동화 평가 도구 제공
- 자유 텍스트 평가: 개방형 질문의 자동 평가는 여전히 인적 개입 필요
- 질문 커버리지: 일부 Scratch 특정 구조는 낮은 수준 차원에서 커버리지 부족
- 실험 규모: 교실 실험 표본 크기 상대적으로 작음(학생 34명)
- 시간 제약: 교실 실험 시간 제약이 결과에 영향을 미칠 수 있음
- LLM 통합: 대규모 언어 모델을 활용하여 자유 텍스트 답변 자동 평가
- 질문 확장: Scratch 특정 구조에 대한 더 많은 질문 유형 추가
- 사용자 인터페이스: 교실 사용에 적합한 질문 생성 및 관리 인터페이스 개발
- 장기 효과 연구: QLCs가 학습 효과에 미치는 장기적 영향 평가
- 높은 혁신성: QLCs를 블록 프로그래밍 언어에 처음으로 체계적으로 적용하여 연구 공백 해소
- 견고한 이론적 기초: Block Model 기반의 체계적 설계로 질문의 이론적 완전성 보장
- 충분한 실험: 대규모 데이터 분석과 교실 실험을 결합하여 방법의 가능성과 효과성 검증
- 높은 실용적 가치: 오픈소스 도구 공개로 연구 성과를 교육 실무에 직접 적용 가능
- 명확한 작성: 논문 구조가 명확하고 기술 세부사항이 정확하게 기술됨
- 평가의 한계: 자유 텍스트 질문의 평가는 여전히 인적 개입 필요로 완전 자동화 제한
- 표본 제한: 교실 실험 표본 크기가 작아 더 큰 규모의 검증 필요
- 심층 분석 부족: 다양한 질문 유형의 효과성에 대한 세밀한 분석 부족
- 적응성 문제: 다양한 연령대 및 기술 수준의 학생에 대한 적응 방법 충분히 논의되지 않음
- 학술적 기여: 프로그래밍 교육 평가 분야에 새로운 연구 방향과 도구 제공
- 실무적 가치: Scratch 교사에게 실용적인 자동화 평가 도구 제공
- 재현성: 오픈소스 코드와 상세한 실험 설정으로 연구의 재현성 보장
- 확산 가능성: 방법을 다른 블록 프로그래밍 언어 및 플랫폼으로 확장 가능
- K-12 프로그래밍 교육: 특히 Scratch를 이용한 프로그래밍 입문 교실에 적합
- 온라인 학습 플랫폼: 온라인 프로그래밍 학습 시스템에 통합하여 자동 피드백 제공 가능
- 교사 교육: 교사가 학생의 프로그램 이해 수준을 더 잘 파악하도록 지원
- 연구 도구: 프로그래밍 교육 연구를 위한 표준화된 평가 도구 제공
논문에서 인용한 23편의 중요 문헌은 프로그램 이해 이론, 프로그래밍 교육 평가, Scratch 분석 도구 등 관련 분야의 핵심 연구 성과를 포괄합니다. 특히 주목할 만한 것은 Block Model의 원본 논문, LitterBox 도구의 관련 연구, 그리고 프로그램 이해와 프로그래밍 능력 간의 관계에 관한 실증 연구입니다.