模範解答プログラムと学習者の編集途中のプログラムの変数名の対応づけ方法についてソフトウェア工学の基礎ワークショップ FOSE2020 で研究発表を行った。この研究の成果は学習者の進捗・理解把握や自動フィードバックに応用できる。C言語の関数を対象にして、変数が利用される文脈などから変数を大きく3つの役割と6種類の特徴に分類して、各特徴を抽象構文木に対するパターンで表した。 パターンは「繰返し文本体で代入される変数」などの特徴を大まかに表す粗いパターンと「繰返し文本体で累積加算(+=)される変数」などの細かいパターンがある。学習者のプログラムは間違いを含む場合があるので、まず粗いパターンによる特徴ベクトルで模範解答と学習者のプログラムの変数の類似度を計算して対応づけを行う。変数の対応に複数の候補がある場合はさらに細かいパターンによる特徴ベクトルで対応づける方法を提案した。模範解答プログラムから文を削除したり、意図的に誤りを混入させて人為的に作成した学習者の編集途中のプログラムに対して提案方法を適用し、およそ7割のソースコードで期待した変数の対応づけが行えることを確認した。 学習者の学習意欲促進と実用的なプログラミング言語学習のためにマイクロマウスシミュレータを用いた学習教材を提案し、情報教育シンポジウム SSS2020で研究発表を行った。学習環境は Web で実現し、JavaScript プログラムによりマイクロマウスを操作する。シミュレータで使用する迷路の大きさやゴールの位置は学習内容に応じて変更できる。迷路を解くことを通して、手続き型言語の基礎概念である順次、分岐、反復や配列、左手法などの迷路探索アルゴリズムを学習できる教材例を作成した。 研究期間を全体を通し、Webによる統合プログラミング学習環境の実現、プログラミングのプロセスから進捗などを把握する方法の提案を行った。
|