情報処理学会第65回全国大会

2D-3

初等アセンブラプログラミングにおけるニアミスプログラムに対するアドバイス文生成システム
渡辺博芳

高井久美子

荒井正之

武井惠雄

帝京大学理工学部

１．はじめに

2.2 事例に基づくアドバイス文の生成

学習者自身のペースで学習を進めるｅ‑Learning 環境
において，提出課題やアドバイスの要求に対して迅速にフィードバックを返すことは非常に重要である．教員ス
タッフに負担をかけずに，迅速なフィードバックを行うためには，評価やアドバイス作業を支援する計算機システムが大きな役割を果たす．我々は，初等アセンブラプ
ログラミングを対象として，学生が作成したプログラムが課題の題意を満たしているかどうかの評価作業を支援する事例ベースシステムを開発した[1,2]．
次のステップとして，動作は正しくないが完成に近いプログラム(ニアミスプログラム)に対するアドバイスの支援を目的とし，アドバイス支援のための全体的なアプローチについて既に検討した[3]．また,正しく動作するプログラムとニアミスプログラムの差異を解析してアドバイス文を生成する方法を提案した[4]．これらの成果を基に，ニアミスプログラムに対してアドバイス文を生成し，学習者に提示するシステムを開発した．本稿では本システムの概要と授業での利用状況について述べる．

本研究では，事例に基づくアドバイス文生成を行うが，その方法として，以下の２つがある．
(1) 他のニアミスプログラムに対するアドバイス事例との類似性に基づくアドバイス文の生成(2) 正しく動作するプログラムとの差異に基づくアドバ
イス文の生成ニアミスプログラムのバリエーションは非常に多いので，アドバイス文を生成できるケースをできるだけ増やすために，本システムでは上の 2 つの方法を併用する．
今回実現したシステムでは，(1)を優先し，適用可能なアドバイス事例が存在しない場合に，(2)を用いた．

２．アドバイス支援のアプローチ
2.1 詳しさとタイミングを考慮した提示モデル

提出状況と提出プログラム
データベース

問題情報データベース

動作が正しいプログラムの評価事例ベース

動作が正しくないプログラムのアドバ
イス事例ベース

サーバ
(CGI)

教員用
問題情報管理用
インターフェース

学生用クライアント

アドバイスを提示する際に，アドバイスの詳しさとタイミングを考慮して提示する．すなわち，人間の教員がよく行うように，最初は簡単なヒントを提示し，それでも分からない場合には，徐々に詳しいアドバイスを提示する[3]．これは以下のように実現できる．
・ アドバイス文を複数の詳しさのレベルに分けて生成する．最も簡単なものをレベル 1，詳しいほうをレベル N とする．
・ アドバイスを提示する際に，どのレベルのアドバイスをいつ提示したかという情報を保存しておく．
・ 同じ学習者の同じプログラムに対してアドバイスを提示する際には，それらの情報を参照し，あらかじめ設定したある条件を満たす場合にのみ，次のレベルのアドバイスを提示する．(今回実現したシステムでは「そのレベルのアドバイス提示後，5分間経過していること」を条件とした．)
これまで，計算機システムによるアドバイス提示においては，最初からシステムができる最も詳しいアドバイスが提示されることが多く，このように，詳しさとタイミングを考慮する方法はほとんどとられていなかった．
A system to generate advice sentences for novice programs
written in assembly language.
Hiroyoshi Watanabe, Kumiko Takai, Masayuki Arai andShigeo Takei, Teikyo University

プログラム
動作評価部
プログラム提出・アドバイス
要求用インターフェース

提出状況用，評価用インターフェース
アドバイス登録用インターフェース

図 1 システム構成

３．システム構成
既に実現しているプログラム評価支援システムに，アドバイス提示のためのサブシステムを付加した．システ
ム全体構成を図 1 に示す．
学生が使用するクライアントシステムのプログラム提出用インターフェースに，「提出ボタン」に加えて，「アドバイス要求ボタン」を配置した．このボタンを押すことで，学生のプログラムがサーバに送られ，サーバに設置されているアドバイス文生成システムによって処理される．
アドバイス文登録用インターフェースは，正しく動作しないプログラムに対してアドバイス文を入力するために用いる．正しく動作しないプログラムは，学生によるアドバイス要求時やプログラムの提出時にシステムが収集する．アドバイス文が入力されたプログラムはアドバイス事例として利用可能になる．このインターフェース

4−275

を学生にも公開することで，余力のある学生にアドバイス事例作成を補助してもらうことも考えられるが，今年度の授業では教員スタッフがアドバイス文を入力した．
アドバイス事例ではアドバイスの詳しさの段階 N は 3とし，入力時に 3 レベルに分けて入力する．一方，差異に基づく方法での詳しさの段階 N は，誤りの種類によって 3，または 4 である[4]．

４．アドバイス文生成処理
2.2 節で述べたどちらの方法においても，アドバイス文生成処理は，事例を検索し，適用可能な事例が存在する場合に，その事例を基にアドバイス文を生成するという流れになる．どちらの方法とも,適用可能な事例が存在しない場合，本システムはアドバイス文を生成できない．

4.1 アドバイス事例との類似性に基づく方法
動作の正しくないプログラムのアドバイス事例ベースを検索し，適用可能な事例が存在するかどうかを調べる．
事例の検索・比較処理は，事例に基づく評価システム[1,2]の方法がそのまま利用できる．アドバイス対象プログラムに高い照合度で照合する事例が存在すれば，そのアドバイス文を利用する．プログラム照合結果を基に，アドバイス文中のラベル名，レジスタ番号などの記述をアドバイス対象プログラムのものに置き換えることでアドバイス文を生成する．

4.2 動作の正しいプログラムとの差異に基づく方法
動作が正しいプログラムの評価事例ベースから，アドバイス対象となるプログラムに最も類似するプログラムを含む事例を検索する．検索された事例とアドバイス対象のプログラムの差異が「採用条件」を満していれば，その差異を解析してアドバイス文を生成する．「誤命令」「命令の不足」「過剰な命令」「順序の違い」「ラベル位置の違い」の 5 種類の差異を対象とする． 詳細については，文献[4]を参照されたい．

５．授業での試験利用
5.1 試験利用の概要
本学 2 年生を対象とした演習授業の 2 つのクラス(履修者は 91 人と 90 人)で，本システムを試験的に使用した．
どの程度アドバイス機能のニーズがあるのかを調べるた
めに，アドバイス機能の利用を学生に積極的にすすめるのではなく，授業のウェブページに簡単な説明を載せておく程度とした．授業全体が終了した時点でアドバイス機能についてアンケートをとった．
出題した課題は延べ 28 問であり，そのうち,11 問は過去に出題したことがあり，今回の出題時に過去の評価事例ベースが存在していた．また，その 11 問中 8 問については，教員が正しく動作しないプログラムについてアドバイス文を入力しており，アドバイス事例ベースも存在した．

5.2 アドバイス要求ログの解析結果
延べ 28 問の出題に対して，全部で 440 件のアドバイス要求があり，そのうち，アドバイスが提示されたのは183 件であった．また，ある問題で同一学生のアドバイス要求を 1 回と数えると，延べ 172 人からアドバイス要求があり，そのうち，76 人にはアドバイスが提示された．
アドバイス要求の数は，問題によって異なり，最も多かった問題では，90 人の履修者中 18 人から全部で 61 件のアドバイス要求があった．
表 1 にアドバイスが提示された割合を示す．全体ではアドバイス要求の約 40%でアドバイスが提示されたが，評価事例が存在した場合は 60%以上でアドバイスが提示された．
表 1 アドバイスが提示された割合
事例有事例無合計
a 類似に基づく方法で提示
72072
b 差異に基づく方法で提示
6861129c アドバイス要求総数
226260486
提示率((a+b)/c×100)(%)
61.9
23.541.4
事例有：過去の評価事例が存在した 11 問．
事例無：出題時には評価事例ベースが空であった 17 問

5.3 アンケート結果
アドバイス要求ボタンを使用したか，使用した場合，アドバイスは役に立ったかについてアンケートをとった．
その結果を表 2 に示す．履修者全員からの回答を回収できなかったが，アンケート回答者の半数以上はアドバイ
ス要求ボタンを使用しなかったことがわかる．アドバイ
ス要求ボタンを利用した学生の多くが「多くが役に立った」「役に立ったこともある」と回答しており，本システムの有用性が示唆された．
表 2 アンケート結果
選択肢
人数多くが役に立った
11
役に立ったこともあった
27
ほとんど役に立たなかった11
アドバイス要求ボタンを使用しなかった
59

６．おわりに動作は正しくないが完成に近いプログラム(ニアミスプログラム)に対するアドバイスを自動的に提示する方法を提案し，初等アセンブラプログラミングを対象としたシステムを実現した．本システムを実際の授業で試験的に利用した結果，その有効性が示唆された．
今後，試験利用におけるログを詳細に解析し，システムの改良を行いたい．なお，本研究の一部は科学研究費補助金 No.14580428 の補助による．

参考文献[1] 渡辺博芳，荒井正之，武井惠雄：事例に基づく初等ア
センブラプログラミング評価支援システム, 情報処理学会論文誌, Vol.42，No.1, pp.99〜109, 2001.
[2] Watanabe,H., Arai,M. and Takei,S. : Case-Based
Evaluation of Novice Programs, Proc. of AI-ED2001,
pp.55〜 64, 2001.
[3] 渡辺博芳，荒井正之，武井惠雄：CPU とアセンブラ
授業におけるプログラム評価とアドバイスの支援，情報処理学会研究報告 2001-CE-59，Vol.2001，No.34，
pp.69〜74, 2001.
[4] 渡辺博芳，高井久美子，荒井正之，武井惠雄：初等ア
センブラプログラミングにおけるニアミスプログラムに対するアドバイス文生成法，情報技術レターズ，
Vol.1, pp.241-242, 2002.

4−276