Skip to main content
QUICK REVIEW

[論文レビュー] InvAASTCluster: On Applying Invariant-Based Program Clustering to Introductory Programming Assignments

Pedro Orvalho, Mikoláš Janota|arXiv (Cornell University)|Jun 28, 2022
Online Learning and Analytics被引用数 5
ひとこと要約

この論文では、匿名化された抽象構文木(AASTs)と動的に生成されたプログラム不変条件を組み合わせることで、意味的類似度の検出を向上させる、入門プログラミング課題(IPAs)のための新規プログラムクラスタリング手法InvAASTClusterを提案する。不変条件を用いてプログラムの意味を捉え、AASTsを構造的表現に用いることで、構文ベースのクラスタリングを上回り、意味的に同等のプログラムを識別できるようになり、Claraなどのクラスタリングベースのプログラム修復ツールにおける修復の高速化と正確化を可能にする。

ABSTRACT

Due to the vast number of students enrolled in programming courses, there has been an increasing number of automated program repair techniques focused on introductory programming assignments (IPAs). Typically, such techniques use program clustering to take advantage of previous correct student implementations to repair a new incorrect submission. These repair techniques use clustering methods since analyzing all available correct submissions to repair a program is not feasible. However, conventional clustering methods rely on program representations based on features such as abstract syntax trees (ASTs), syntax, control flow, and data flow. This paper proposes InvAASTCluster, a novel approach for program clustering that uses dynamically generated program invariants to cluster semantically equivalent IPAs. InvAASTCluster's program representation uses a combination of the program's semantics, through its invariants, and its structure through its anonymized abstract syntax tree (AASTs). Invariants denote conditions that must remain true during program execution, while AASTs are ASTs devoid of variable and function names, retaining only their types. Our experiments show that the proposed program representation outperforms syntax-based representations when clustering a set of correct IPAs. Furthermore, we integrate InvAASTCluster into a state-of-the-art clustering-based program repair tool. Our results show that InvAASTCluster advances the current state-of-the-art when used by clustering-based repair tools by repairing around 13% more students' programs, in a shorter amount of time.

研究の動機と目的

  • 自動修復を目的とした入門プログラミング課題(IPAs)において、意味的に同等の正しく実装された学生の解答を効率的に特定する課題に対処する。
  • 構文ベースおよび制御フローに基づくプログラム表現の限界を克服する。これらの表現は壊れやすく、意味的同等性を捉えきれないことがある。
  • 構造的(AAST)および意味的(不変条件)な特徴を統合した、より頑健なプログラム表現を開発し、クラスタリングの正確性を向上させる。
  • 提案手法の実世界のプログラム修復パイプラインにおける評価を通じて、既存の最先端のクラスタリング技術を上回ることを実証する。
  • MOOCにおける自動フィードバックの効果的かつ効率的な実現を可能にする。クラスタ数を削減しつつ、修復成功率を向上させる。

提案手法

  • 変数名の違いによる構文的差を保ちながら、プログラムの構造を表現するため、匿名化された抽象構文木(AASTs)を構築する。
  • 複数回のテスト実行を経て、Daikonを用いてプログラム不変条件を動的に生成し、ループ不変条件や変数間の関係など、意味的性質を捉える。
  • 各プログラムについてAASTsと不変条件集合を統合したベクトル表現に統合する。これにより、類似度に基づくクラスタリングが可能になる。
  • 統合されたベクトル表現に基づきコサイン類似度を計算し、意味的に同等のプログラムのクラスタを形成する。
  • Claraプログラム修復フレームワークにInvAASTClusterを統合し、修復パフォーマンスおよびスケーラビリティへの影響を評価する。
  • クラスタリングベースの修復を適用:各誤った学生の提出物について、最も近い正しいプログラムをクラスタ内で特定し、最小限の修正を加える。

実験結果

リサーチクエスチョン

  • RQ1AASTsと動的に生成された不変条件を組み合わせたプログラム表現は、構文のみの表現と比較して、意味的に同等のIPAsのクラスタリング正確性を向上させることができるか?
  • RQ2不変条件の使用により、入門プログラミング課題に一般的に見られる小さな命令型プログラムにおける意味的同等性の検出能力が向上するか?
  • RQ3Claraのような最先端のクラスタリングベースのプログラム修復ツールに統合された際、InvAASTClusterは実際の運用でどの程度の性能を示すか?
  • RQ4InvAASTClusterは、すべての正しく提出された学生の解答をカバーするのに必要なクラスタ数を削減できるか?同時に、修復正確性を維持または向上できるか?
  • RQ5提案手法は、既存のクラスタリング技術と比較して、より短い修復時間と高い修復カバレッジを達成できるか?

主な発見

  • AASTsと不変条件を組み合わせたInvAASTCluster表現は、IPAのクラスタリング正確性において、構文ベースの表現を著しく上回った。
  • Clara修復フレームワークに統合した結果、元のClaraクラスタリング手法と比較して、より多くの誤った学生の提出物が修復された。
  • InvAASTClusterの導入により、必要なクラスタ数が削減されたが、修復正確性は維持または向上したため、スケーラビリティが向上した。
  • InvAASTClusterを用いた修復プロセスは、より正確で意味的に意味のあるクラスタ代表を用いるため、高速化された。
  • 本手法は多様なプログラミング演習において頑健であり、クラスタ形成の精度と再現率の両方で一貫した改善を示した。
  • プログラム表現に不変条件を統合することで、異なる変数名や制御フローの順序を用いるが意味的に同等のプログラムの検出が可能になった。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。