プログラム空欄補充問題作成の理論的検討

豊田研究室  寺井 淳裕
 

1. はじめに

情報処理教育にはさまざまなものが考えられるが、よく取り上げられるものとしてプログラミング技術の修得がある。中でも、プログラミングをおこなう際の基礎となるものとして、プログラムを読み書きできるというスキルを身につけさせることは重要な課題である。本論文ではとくにプログラム理解を支援する手法として、プログラム空欄補充問題を提案する。
プログラム理解には、プログラムから(1)アルゴリズムを把握する、(2)仕様を満たすか確認する、(3)バグを検出する、などさまざまなものが考えられる。本研究では、プログラミングの初心者を対象にして (1)をプログラム理解とみなしアルゴリズム理解を促すプログラム空欄補充問題の作成について検討をする。

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

アルゴリズムは、プログラム言語を介さず、それ自体を直接学ぶ事ができるがプログラミングスキルの向上を目指す場合、計算機上で具体的な処理を通して、プログラミングを学ぶ事も大切である。特に初心者にとってはアルゴリズムと、それを具体化するプログラム言語とを相互に対応づける知識を学ぶことは非常に重要である。このような観点から、本論文ではアルゴリズム理解を支援する一手法として、プログラムコード中に空欄を設けて、プログラム仕様を与えるとともに、空欄を埋めるよう問う問題、(空欄補充問題と呼ぶ)を用いる。

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

PDG (Program Dependence Graph)とは、下図に示すように、基本的にプログラムの各文をノードとし、任意の文と文の間の依存関係をアークとするグラフである。この文間の依存関係を利用してプログラムの流れ(アルゴリズム)を追い、空欄を設定するための経験則を導き出した。経験則は以下のとうりである。


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

本論文での空欄設定手法の妥当性を検証するすめにプログラミングの熟練者に(i)素数を求める、(ii)整列をする、(iii)公倍数を求める、というアルゴリズムを持った3つのプログラムから、初心者のアルゴリズム理解に役立つ空欄を選んでもらうというアンケート調査を行った。この結果、経験則に基づきPDGから設定した空欄が、熟練者のアルゴリズム理解に有効と考えた空欄とほぼ一致した。

5. 結論

本論文ではプログラムコードから、空欄にすればアルゴリズム理解に役立つと思われる個所を決める方法を提案した。 この手法ではPDGの依存関係を利用することによってアルゴリズムの内容にかかわらず、有効な空欄が設定できる。 また、アンケート調査の結果、空欄設定の妥当性を確認できた。