PDGによるプログラム空欄補充問題の作成とその評価

豊田研究室  久米井 邦貴

1. 序論

 情報処理教育において、プログラミング技術の習得は中心的な課題の1つである。中でも、プログラミングを行う際の基礎スキルとして、プログラムを読み書きするスキルを身に付けさせることは重要な課題となっている。本論文ではプログラム理解支援手法として空欄補充問題を取り上げ、その作成法について提案する。ここで、より効果的な学習のためには適切な空欄設定が必要となる。具体的にはPDG(Program Dependence Graph)を用いることで、プログラムコードから制御およびデータの流れの要所となる部分を見つけだし、そこを空欄とする方法を提案する。なお、ここではC言語で記述されたプログラムを題材としている。

2. プログラム空欄補充問題

 プログラム空欄補充問題の基本的な概念を示すとともに、従来のプログラム理解支援方法と比較し、空欄補充問題の有効性を論じる。空欄補充問題は、プログラム理解の促進・強化を目的とする場合により有効な問題であり、学習者のプログラム理解能力の育成に貢献する問題である。一方、空欄の設け方によっては学習の効果を損ねたり、学習者のプログラム理解に過度の心的負担(認知負荷)を与える可能性がある。そうした事態を避けるために、空欄補充を通じて手続きや処理過程の理解を促進することができるような、空欄設定の方法を検討する必要がある。そこで初学者のプログラム理解の促進・強化のために有効であると考えられるような空欄について、そのサイズ、数、場所の面から検討を加える。

3. PDGを用いた空欄設定手法

 先に述べた空欄設定方針を満たす箇所を、PDGを用いて実際のプログラムコードから見つけだす手法について論じる。プログラム理解を促すためには、プログラムの制御またはデータの流れの要所となっている文を空欄に設定すればよい。このような要所を探すために本論文ではPDG(Program Dependence Graph)を用いている。PDGとは、プログラムの各文をノードとし、任意の文と文の間の依存関係をアークとするグラフである。本章ではPDGの定義や特徴を簡単に説明した上で、PDGの持つ文と文との間の依存関係をもとに導き出した空欄候補を見つけるための経験則および空欄候補の優先順位を決める経験則について説明し、また実際にこの経験則に基づいて開発したシステムについて述べる。

4. 空欄設定手法の妥当性検証

 先に述べた空欄設定方法の妥当性を検証するために、プログラミング演習問題集の分析とその考察を行った。提案した空欄候補の優先順位を決める経験則に基づいて設定した空欄箇所と、C言語のプログラミング演習問題集に掲載されている空欄補充問題の空欄箇所とを比較し、その一致度を調査することで、本手法の妥当性を検証することを目的とした。その結果、本手法による空欄設定方法の妥当性が証明された。

5. 結論

 本論文では、空欄に設定することによってプログラム理解に効果的であると思われる箇所を、PDGから決定する方法を提案した。本手法では、PDGの依存関係を利用することでプログラムの意味内容を解釈することなく、学習に有効な空欄を設定することが可能である。また、プログラミング演習問題集を分析したところ、問題集における空欄補充問題で実際に設定されている空欄箇所と、本研究で検討した空欄設定方法での箇所とがかなりの頻度で一致した。これにより、本手法の妥当性が確かめられた。今後の課題としては、空欄設定方法をさらに洗練することや、学習者の能力に合わせた支援システムの作成、また複数の空欄を設定したときの、空欄間の関係がその問題の難易度に与える影響の調査などがあげられる。