中国地区

教育システム情報学会 2021年度学生研究発表会

空欄補填による C プログラミング学習課題の作問化
Making Fill-in-Blank Program Problems of C source code
into problem posing learning task
重松 大志*1, 松本 慎平 1
Hiroshi SHIGEMATSU*1, Shimpei MATSUMOTO *1*1
広島工業大学情報学部*1
Faculty of Applied Information Science, Hiroshima Institute of Technology
Email: {bl18043, s.matsumoto.gk}@cc.it-hiroshima.ac.jp
あらまし：学習者自らが課題を作成する作問学習と呼ばれる学習方式がある．作問学習は一般的な学習よりも効果が高いと言われている．そのため，作問学習に焦点を当てたプログラミング学習支援に関する研究はいくつか見られる．本研究では，プログラミング教育で広く用いられている空欄補填問題に着目し，それを作問学習するためのシステムを設計・開発すること，その有用性を明らかにすることを目的とする．
学習効果が一般的に認められており，一般的なプログラミングの講義で広く使われているような学習課題に着目しそれを作問させることは，適切だと考えられ高い学習効果が期待できるが，学習効果自体については課題の設計方法に強く依存するため自明ではない．本研究の意義は，空欄補填によるプログラミン
グ学習課題を作問化する適切な方法を明らかにする点にある．
キーワード：プログラミング，C 言語，空欄補填，作問

1.

はじめに学習者自らが課題を作成する作問学習と呼ばれる学習方式がある (1)．作問学習では，学習者が主体となることから，従来の学習よりも効果的な復習ができ，単元理解の定着に役立つとされる．また，作問学習は一般的な学習よりも効果が高いと言われている．
作問学習に焦点を当てたプログラミング学習支援に関する研究はいくつか見られる(2,3)．そこで本研究では，プログラミング教育で広く用いられている空欄補填問題(4,5)に着目し，それを作問学習するためのシステムを設計・開発すること，その有用性を明らかにすることを目的とする．

2.

関連研究

学習を目的とした作問においては，その学習目的に沿った制約が与えられる，問題を「所与情報」，「問い」，「解法」，で特徴付けられるとすると，これらについて制約を与えることで，様々な作問課題を設定することが可能とされている(1)．なお，「所与情報」はその問題を解く際に既知として用いてよい情報である．
「問い」は，所与情報から演繹的に導くことができる情報である．さらに，所与情報から問いの情報を導く手順は「解法」である．作問課題の典型的な形式としては，(a)「所与情報」を制約として与える物語ベースの作問，(b)「所与情報」と「問い」を制約として与える問題ベースの作問，(c)「解法」を制約として与える解法ベースの作問，に分けることができる．作問課題は，どのような情報をあらかじめ与え，また，制約条件とするかによって，さらにいくつかの形態に分類することができる．単文統合型作問学習支援システム「モンサクン」では，解法を制約として定めておき，その解法を適用できる問181題を作る「解法ベースの作問」を対象としている．
本研究でも同様に，「解法ベースの作問」を扱う．
プログラミング学習で教授者が学習者を指導する際，学習者のプログラミング理解度に合わせた適切な指導を行うことが求められる．一般的に，プログラミング理解度を判定するために学習者にテストを行ったとしても，一般的なテストでは，学習者の理解度に対して迅速なフィードバックを行うことができない．フィードバックが遅れたために，その項目に対して理解していない状態で，次の項目を学ぼうとした結果，授業についていけず，プログラミング学習を忌避する恐れがある．そのため，教授者は早期に明らかにする必要がある．その方法として，ソースコードの一部の命令を選択・記述する空欄補填によるプログラミング学習 (4,5)があり，理解度を早期に把握する手法として有用だと考えられている．

3.

提案システム本研究では，空欄補填の学習を実践可能な C 言語初学者(以降，初学者)のためのプログラミング学習支援システム(以降，Hello C)(6)をベースシステムとして拡張し，C 言語における空欄補填の作問学習を実装する．Hello C を用いることで，教授者が意図した学習課題の提示・収集・採点・評価が容易となる．
本研究では，モンサクンと同様に，いくつかの空欄と複数のソースコードを持つカードが選択肢に与えられ，テストケースを満たす解が一意に定まるよ
うなカードを適切な順番で与えることで，空欄補填の作問を実現する．現状の Hello C では，システムの設計上，本研究で独自に設計した作問学習を実践できない．そこで，そのための Hello C サーバ及びクライアントの拡張を主な取り組みとする．Hello C

中国地区

教育システム情報学会 2021年度学生研究発表会

サーバは node express と postgresql，クライアントはjava を用いて開発を行った．図 1 と図 2 に，演習時のインタフェース画面を示す．右側に問題文や実行例，左側に回答欄，中央にカード群が提示された選択肢欄が表示される．問題文を満たすようなプログラムの組み立てを行わせる．組み立て後，提出ボタンを押すことで，組み立てしたプログラムの提出を行うことが．制限時間中であれば何度でも解答を提出することができる．カードは，マウスのドラッグ¥&ドロップ操作で，選択肢から回答欄にカードを移動し，プログラムを組み立てていく．

ラミングの基礎を習得している情報学を学ぶ大学 3年生，4 年生 20 名を対象とする．実験では，プレテストにて，被験者の理解度を図るような C 言語の問題を 3 問提示し，試験結果から，学力水準が平等になるように統制群，実験群に 10 名ずつ被験者を分ける．統制群では，Hello C 上で空欄補填問題の学習を行い，実験群では，本システムを用いた空欄補填問題の作問により学習を行う．学習実験を行った後に，ポストテストを行った．
実験結果を図 3 に示す．実験結果からウェルチのt 検定(片側)を行い，2 群の差を調査した結果，実験群と統制群の間に統計的に有意な差は示されなかった．一方，実験群の平均点は統制群よりも上がっていることから，空欄補填の作問学習は，一般的な空欄補填による学習よりも高い学習効果を有する可能性が示唆された．なお，有意差が出なかった原因として，実験群，統制群どちらも学習時間を１問 20 分で行ったが，統制群では学習実験にて全員が正解にたどり着けていたのに対して，実験群では正解にたどり着けていない被験者が何名かいたためであり，このような被験者を除くと有意な差(p<.05)が認められた．よって，提案法の有用性は示唆された．

図 1 提案システムの外観

5.

おわりに

本研究では，作問学習に焦点を当て，C 言語プログラミングの空欄補填問題を作問学習するためのシステムを提案した．

謝辞
本研究は，独立行政法人日本学術振興会科学研究費助成事業(基盤研究(C)20K0319，No.19K02987)の助成を受けて実施した成果の一部である．ここに記して謝意を表します．
参考文献

図 2 提案システムを用いた作問の方法(1) 平嶋宗. 作問学習に対する知的支援の試みと実践. 科学教育研究,Vol. 43, No. 2, pp. 61–73, 2019.
(2) 山岸芳夫, 「プログラミング基礎」における作問学習の実践，工学教育研究;KIT progress, No. 26, pp. 91–100,mar 2018.
(3) 新開純子. プログラミング教育における作問活動の試み. 教育システム情報学会第 38 回全国大会, pp.
153–154, 9 2013.
(4) 五島僚佑, 浅井創, 島川博光. 空欄補充問題の自動ラベリングによる苦手学習項目の抽出 . システム制御
情 報 学 会 研 究 発 表 講 演 会 講 演 論 文 集 , Vol. 63, pp.
1503–1510, may 2019.
(5) 柏原昭博, 久米井邦貴, 梅野浩司, 豊田順一. プログ
ラム空欄補充問題の作成とその評価 . 人工知能学会
論文誌, Vol. 16, pp. 384–391, nov 2001.
(6) 松本慎平, 大下昌紀, 買田康介, C 言語初学者及びその教授者のためのサーバ・クライアントに基づくプログラミング学習支援システムの開発 , 電気学会論文
誌 C(電子・ 情報・シ ステム部 門誌 ), Vol.140, No.9,pp.1096-1109 (2020)

図 3 各機能の評価結果

4.

実験及び評価空欄補填による作問学習の学習効果を確認するため，アルゴリズムと C 言語の基本を学習する実験をHello C を用いて実践する．対象者は，C 言語プログ

182