• 検索結果がありません。

プログラミング授業支援システム WOJ の開発

N/A
N/A
Protected

Academic year: 2021

シェア "プログラミング授業支援システム WOJ の開発"

Copied!
70
0
0

読み込み中.... (全文を見る)

全文

(1)

2014 年度修士論文

プログラミング授業支援システム WOJ の開発

提出日 2015 1 16

指導 筧捷彦教授

(2)

目 次

第1章 序論 4

1.1 背景 . . . . 4

1.2 目的 . . . . 5

1.3 論文の構成 . . . . 5

第2章 関連研究 7 2.1 競技プログラミングのコンテストを支援する研究 . . . . 7

2.1.1 競技プログラミングのコンテストとは . . . . 7

2.1.2 関連研究. . . . 7

2.2 プログラミング授業を支援する研究 . . . . 8

2.2.1 プログラムの採点に着目した研究 . . . . 8

2.2.2 開発環境及び学習状況の把握に着目した研究 . . . . 9

2.3 問題点 . . . . 10

2.3.1 開発環境. . . . 10

2.3.2 自動採点. . . . 11

2.3.3 学習状況把握 . . . . 12

第3章 提案手法 13 3.1 設計思想 . . . . 13

3.2 開発環境 . . . . 13

3.3 自動採点 . . . . 14

3.3.1 採点可能なプログラム . . . . 14

3.3.2 フィードバック . . . . 14

3.4 学習状況把握 . . . . 15

第4章 システムの設計 16 4.1 対象 . . . . 16

4.1.1 利用者 . . . . 16

4.1.2 適用対象. . . . 16

4.1.3 アカウント . . . . 16

(3)

4.2.2 メニュー. . . . 17

4.3 管理者用機能 . . . . 19

4.3.1 ユーザ管理 . . . . 19

4.3.2 授業管理. . . . 21

4.4 教員用機能 . . . . 23

4.4.1 担当授業ページ . . . . 23

4.4.2 テスト環境ページ. . . . 25

4.4.3 テストケースの設置 . . . . 25

4.4.4 提出状況. . . . 32

4.4.5 不合格者の提出状況 . . . . 32

4.4.6 星取り表. . . . 32

4.4.7 ログ検索. . . . 32

4.5 学生用機能 . . . . 41

4.5.1 履修授業ページ . . . . 41

4.5.2 開発環境. . . . 41

4.5.3 提出履歴. . . . 42

第5章 実装 44 5.1 前提知識 . . . . 44

5.1.1 Ace.js . . . . 44

5.1.2 Isolate . . . . 44

5.2 開発環境 . . . . 44

5.3 自動採点 . . . . 45

5.4 学習状況把握 . . . . 46

第6章 評価実験 48 6.1 評価実験概要 . . . . 48

6.1.1 比較実験. . . . 48

6.1.2 実用実験. . . . 49

6.2 実験結果 . . . . 51

6.2.1 比較実験結果 . . . . 51

6.2.2 実用実験結果 . . . . 52

(4)

8.2.1 開発環境の改善 . . . . 62 8.2.2 学生が提出したプログラムの解析 . . . . 62 8.2.3 日本語プログラミング言語への対応 . . . . 63

(5)

1 序論

1.1 背景

近年,プログラミング教育のニーズが急増している.2013年6月5日に政府が発表した成長戦略素案におい て,「2010年代中に一人一台の情報端末による教育の本格展開に向けた方策を整理」し,「義務教育段階からの プログラミング教育等のIT教育を推進する」と記されている[1].

また,日本だけでなく,世界各国でもプログラミング教育の重要性を認識し,必修科目に取り入れようとし ている国も多い.アメリカでは,大統領がプログラミングの必修化が必要だと発言しており1,今後この流れ が加速すると考えられる.エストニア2,シンガポール3,イギリス4 なども,教育の早い段階で,プログラ ミング授業を取り入れている.このように,今後プログラミング教育のニーズが増加し,プログラミングの義 務教育化が行われ,授業でプログラミングを学ぶ学生の数が急増すると考えられる.

初学者がプログラミングを初めるのに,大きな障壁がある. それは,プログラミングを行う開発環境の導入 である. それぞれの端末環境に準じた手順を正しく踏まなければ,開発環境を導入することはできないのであ る. 初学者にとって,自分の端末における開発環境の導入手順を知ること,それらを正しく行うことは非常に 難しいのである.初学者がプログラミング開発環境を導入する手間を省くために,ウェブシステム上に開発環 境を構築したシステムが存在する[2.2.2 参照].しかし,標準入出力以外の入出力を用いたプログラムの実行 が行えないなどの問題点がある.

受講生が与えられた課題に基づいてプログラミングを行うプログラミング演習と呼ばれる形式の授業が多く の教育機関で行われている[2].プログラミングの主要な学習は,実践的なプログラミング演習を通して行われ るため[3],効果的な教育方法といえる.しかし,学生が提出したプログラムを,11つ正しい挙動をしてい るか確認する必要があるため,教員の負担が大きい.教員は,学生が提出した膨大な数のプログラムを手動で 1つ1つコンパイル,実行し,採点する作業は非常に手間のかかる作業である.学生が提出したプログラムが 正しいか,テストケースに従い自動で採点する機能を備えたシステムが存在する[2.2.1参照].しかし,これら のシステムには,採点できるプログラムの種類に制限がある.その上,学生の開発環境上でのプログラムの挙 動と,採点者の環境上でのプログラムの挙動が異なる可能性も大いにある.このような環境の差異により生じ

(6)

るプログラムの挙動の違いは,採点に大きな支障をきたし,正確な採点を行うことができない可能性がある.

また,自動で採点した結果を学生に表示する際に,なぜ提出したプログラムが不合格なのか,学生が理解で きるように表示しなければならない.学生の学習を促進できるような採点結果,フィードバックの表示を試み た研究は多数ある[2.2.1参照].これらの手法の中で,どの手法を採用すべきかは,授業の方針によって異なる.

そして,講義や演習についていけなくても質問をせず,取り戻せないほど遅れてから質問をする学生や最後 まで質問をしない学生が多い[4].そのため,学生の学習状況を詳細に把握することも非常に重要である.教員 が授業を実施している教室内を巡回することで,学生の学習状況を把握することはある程度可能である.しか し,講義時間に限りがあるため,全学生の学習状況を詳細に把握することは難しい.この問題を解決するため に,プログラミング授業における学生の学習状況を把握するシステムを提案した研究は多数ある[2.2.2 参照] それぞれの研究が独自の観点から学生の学習状況の把握を試みている.これらの手法間の優劣を比較している 事例はなく,どの指標を授業に導入すべきか判断するのは難しい.

1.2 目的

本研究では,プログラミングを行うことができる「開発環境」,プログラムを自動採点する「自動採点機能」,

学生の学習状況を詳細に把握できる「学習状況把握機能」を備えたプログラミング授業支援システム,Waseda Online Judge(以降,WOJと呼ぶ)を提案する.

WOJ上にプログラミング開発環境が構築されているため,学生はウェブブラウザを通してプログラミング の開発を行うことができる.WOJの開発環境では,既存手法では行うことができない標準入出力以外の入出 力を利用したプログラムの実行などの基本的な機能が備わっている.これにより,学生は端末内にプログラミ ング開発環境の導入をする必要がなくなる.

自動採点機能により,学生はプログラム提出後,すぐに採点結果とフィードバックを得ることができる.ま た,既存手法では採点を行うことができなかった複数のファイルで構成されるプログラムの採点にも対応でき る.教員は,膨大な数のプログラムを手動でコンパイル,実行,採点する作業から解放されるだけでなく,従 来のシステムを利用した際には課題として出題できなかった様々な入出力を用いた問題を課すことができる.

そして,学生はWOJ上でプログラムを作成し,プログラムの自動採点もWOJ上で行うので,環境の差異に よって生じる問題も解決できる.

採点結果として学生に表示するフィードバックについて,プラグインを開発することで様々な手法を取り込 めるような枠組みを提供する.この枠組みを利用することで,教員は自分の授業の方針に合ったフィードバッ クを学生に表示することができる.

学習状況把握機能について,WOJ上での学生の行動を記録することで,様々な手法による分析を行える枠 組みを提供する.この枠組みを利用することで,WOJ内に既存の学習状況を把握するための分析手法を取り 込むことができる.

1.3 論文の構成

(7)

第2章では,関連研究を紹介する.そして,それぞれのシステムの問題点について述べる.

第3章では,本論文で提案するプログラミング授業支援システム,WOJを紹介する.

第4章では,WOJの設計について説明する.

第5章では,WOJの実装方法について述べる.

第6章では,本システムを評価するために行った実験について述べる.実験方法を説明し,得られた実験結 果を掲示する.

第7章では,第6章で得られた実験結果に基づき,この提案手法の有用性について議論する.

第8章では,総括を行う.本論文の目的を整理し,前章までで述べたことを整理する.そして,今後の展望 を述べる.

(8)

2 関連研究

第2章では,関連研究について述べる.関連研究は,競技プログラミングのコンテストを支援する研究,プ ログラミング授業を支援する研究の2種類に分けることができる.

2.1 競技プログラミングのコンテストを支援する研究

2.1.1 競技プログラミングのコンテストとは

競技プログラミングのコンテストとは,与えられた課題を解くプログラムを正確かつ早く作成するコンテス トである.課題では入力に対して求めるべき出力の仕様が定められている.代表的な競技プログラミングのコ ンテストとして,アメリカのコンピュータ学会ACM(Association for Computing Machinery)[5]が毎年開 催する国際大学対抗プログラミングコンテスト(International Collegiate Programming Contest[6]が挙げ られる.

2.1.2 関連研究

Maggiolo[8][9]は,IOI[7]が主催するプログラミングコンテストの支援を目的として,Contest Management

Systemを開発した(以降,CMSと呼ぶことにする)CMSは,プログラミングコンテストにおいて,競技者

が提出したプログラムが正しいか自動で判定することを目的としている.課題ごとに設置されたテストケース に従い,入力と出力のチェックを行い判定している.これにより,プログラムが正しいか手動で採点する必要 がなくなった.

類似システムとして,Aizu Online Judge[10]PKU Judge System[11]UVa Judge System[12]Sphere Online Judge[13]A2 Online Judge[14]CodeForces[15]DomJudge[16]などがある.これらすべてのシス テムはCMSと同じテストケースによる自動採点機能を有している.教育機関の中にはこれらのシステムを利 用し,教員がプログラムの採点をする手間を省いている1.採点結果として表示する情報は,プログラムの実 行時間,メモリの使用量などの実行情報と採点結果を表示する.

上記の研究の機能を整理した結果を表2.1に示す.対応言語はシステムで採点できるプログラミング言語の 種類を表している.5種類以上のプログラミング言語を扱える場合に,「多」と記した.自動採点とは,プログ ラムを自動で採点する機能があるかを表し,存在する場合には○,存在しない場合は×を記した.

(9)

表2.1: 競技プログラミングのコンテストを支援する研究の機能

システム名 対応言語 自動採点

CMS

Aizu Online Judge

PKU Online Judge C/C++/Java/Fortran ○ UVa Online Judge C/C++/Java/Pascal ○

Sphere Online Judge

A2 Online Judge

CodeForces 多 ○

Dom Judge 多 ○

2.2 プログラミング授業を支援する研究

2.2.1 プログラムの採点に着目した研究

プログラミングのレポートを自動で採点するシステムの1つとしてGAME[17]が挙げられる. GAME Griffith UniversityのMichael Blumensteinらが,学生に集中的なプログラミングの学習を行わせることを目 的として開発した. GAMEにCプログラムを実行するためのコマンドと,入力値,出力値を与えるとそれら を用いて採点を行い,採点結果を表示する.しかし,GAMEは採点結果として点数しか表示せずどの入力値 に対して出力が誤っているのかが分からない.

この問題を解決する為に石川[19]は,テストケースによる自動採点の結果として,どのテストケースに対し て間違っているかを学生に表示するようにした.学生は自分の提出したプログラムが不合格であった場合に,

正しく動作しない例を知ることができ,プログラムを修正する際に役立つ.

石原ら[20]は,テストケースごとに入力と出力データだけでなく,学生に表示されるフィードバックコメン トを設定できるようにした.教員がフィードバックコメントに,テストケースの作成意図などの情報を含める.

例として,「入力データがintの範囲を超えた際に正しく動作するか確認」といった作成意図をフィードバック コメントに設定する.これにより,学生はテストケースの作成意図を知ることができ,自分のプログラムを修 正する際に役立つ.

Venablesら[21]が開発したSubmitは,採点結果と共に提出されたプログラムを解析した結果を返す.プロ

グラム内のコメントやメソッドの長さの測定,コメント内に作成者名,学籍番号,日付などが含まれているか

(10)

表2.2: プログラムの採点に着目した研究の機能 システム名 対応言語 自動採点 フィードバック

GAME C

石川 C テストケース

石原 C ○ テストケース/フィードバックコメント

Submit Java ○ テストケース/解析結果

Course Maker C/C++/Java 解析結果

BOSS C/C++/Java テストケース

Mooshak 多 ○ 解析結果

Roboprof 多 ○ テストケース

Game-2+ C/Java

2.2.2 開発環境及び学習状況の把握に着目した研究

上野ら[30]はウェブシステム上にプログラミング開発環境を構築することで,学生がウェブブラウザを通し てプログラミングを行える環境を整えた.これにより,学生がプログラミング開発環境を構築する手間を省い た.また,教員が学生のプログラムをリアルタイムに閲覧できるようにすることで,教員が学生の学習状況を 把握できるようにした.教員が1名,学生が4名で実験的に利用したところ,教員は問題なく指導をすること ができた.

井垣ら[31]は,プログラミング授業においてウェブ上で動作するオンラインエディタを用意し,学生のコー ディング遅延や停滞を可視化するシステム,C3PVを開発した.加藤ら[32]は,コンパイルエラーを分類する ことでコンパイルエラーの傾向を教員が容易に把握できるようにした.そして,学生のコンパイル,提出など の時刻を統計分析をすることで,学習の進みの遅い学生の発見を試みた.蜂巣ら[33]は,ソースコードの記述 内容にまで踏み込んだ分析が必要だと考え,学生のプログラムを字句や式などの単位から分析を行う進捗状況 把握方法を提案した.

上記のシステムは,ウェブシステム上に開発環境を用意することで,学生がプログラミング開発環境を導入 する必要をなくしている.そして,開発環境の使用状況,作成したプログラムなどを監視,分析することで学 習状況の把握を試みている.

上記の研究の機能を整理した結果を表2.3に示す.開発環境,学習状況把握について,それぞれの機能が存 在する場合に○,存在しない場合には×を記した.

(11)

表2.3: 開発環境及び学習状況の把握に着目した研究の機能 システム名 対応言語 自動採点 開発環境 学習状況把握

上野 C ×

井垣 多 × ○ ○

加藤 多 ○ ○ ○

蜂巣 多 × ○ ○

2.3 問題点

上記で述べた研究が掲示したプログラミング授業における問題点を整理すると,以下のようになる.

初学者にとってプログラミング開発環境を導入することは難しい

学生が提出したプログラムを採点する作業は教員にとって重荷である

学生の学習状況を詳細に把握することは難しい

以降,本論文では上述した3つの問題点を,プログラミング授業の3つの問題点と呼ぶ.

これらの問題点を解決するために上記の研究ではさまざまなアプローチを取っているが依然として問題点が 存在する.それは,プログラミング授業の3つの問題点,すべてを解決しているシステムが存在しないことで ある.さらに,それぞれの問題点を解決する手法にも問題がある.開発環境,自動採点,学習状況把握の観点 から述べる.

2.3.1 開発環境

表2.3を見るとわかる通り,既存研究ではシステム上に開発環境を構築することにより,学生がプログラミ ング開発環境を構築する必要をなくした.これらのシステム上で行える操作は,ファイルの作成,削除,コン パイル,実行,提出である.これらの機能はプログラミング授業を支援するために必要な機能をすべて備えて いるのだろうか.

本大学の理工学部1年生の必修科目,Cプログラミング入門」Cプログラミング」のシラバスを調査した.

これらの授業において,学生は以下の機能を利用したプログラムを作成する.

(12)

複数ファイルで構成されるプログラム

外部のライブラリの関数を利用したプログラム

以降,本論文では上述した6つのプログラムを,基本的なプログラムと呼ぶ.

既存研究では,基本的なプログラムの一部しか扱えないのは大きな問題である.すべての基本的なプログラ ムを扱うことができないために,対応していないプログラムを作成するには,結局自分の端末内に開発環境を 導入しなければならない.

また,上野らはシステム内でコンパイル,実行を行うのにLLVM[34]を利用している.LLVMを利用し,C 言語を始めとする一部の言語をJavascriptに変換し,実行しているのである.そのため,理論上,LLVMによ り変換が可能なプログラミング言語しか扱うことができない.井垣ら,蜂巣らはIdeone[35]という外部のウェ ブサービスを利用している.このウェブサービスはプログラムと標準入力を提供すると,プログラムをコンパ イル,実行し,プログラムの出力を返す.このように外部のウェブサービスを経由しているため,プログラム の実行結果を得るまでに時間がかかってしまう.実際に評価実験において,これらのシステムを利用した学生 は,動作が遅いと回答している[33]

2.3.2 自動採点

学生が提出したプログラムを採点する作業は教員にとって重荷であるため,その作業を自動化したシステ ムは多数存在する.これらの既存研究の問題点を,採点可能なプログラム,フィードバックという観点から述 べる.

採点可能なプログラム

表2.1,表2.2,表2.3を見てわかる通り,自動採点機能を備えたシステムは多数存在する.加藤らが開発し たシステムでは,プログラムに対して入力を行わずに実行をして,標準出力の結果が正しいかのみを見て判定 する.また,その他の研究では,テストケースに従い標準入力に入力を行い,標準出力の結果を見て正解判定 をしている.既存研究では,基本的なプログラムの一部しか採点を行うことができないのである.そのため,

プログラミング授業において,既存システムを利用した場合は,採点できないプログラムに対して手動で採点 を行わなければならない.そして,学生がプログラムを開発した環境と採点するシステムでの環境が異なるこ とから,プログラムの挙動が異なり正しく採点を行えない可能性もある.

フィードバック

フィードバックの要件は,プログラミング授業を担当する教員の教育方針や学生により変わりうる.例とし て,C言語などのコンパイラ言語を利用しているプログラミング授業では,学習状況を把握する際に加藤らの コンパイルエラーを分類することは有益となりうる.しかし,スクリプト言語を利用している授業では,そも そもコンパイルの必要がないため,コンパイルエラーを分類することはできない.また,教員がコメントの内

(13)

このような教員の教育方針や学生により,変わりうる要件に対して固定の手法をとるのは必ずしも有益とは ならない.変わりうる要件に対しては,その変化に対応できるような仕組みが必要である.

2.3.3 学習状況把握

表2.3に示したように,学習状況の把握を試みた研究は多数ある.それぞれが独自の観点から学習状況の把 握を試みている.しかし,これらの手法間の優劣を比較した事例はなく,どの手法が最適か判断するのは難し い.また,フィードバックと同様,プログラミング授業によって変わりうる要件と言える.

例として,上野らの手法は教員に対する学生の人数が少ない時には有効である.実際に,教員1名,学生4 名で実験的に利用し教員は学生の学習状況を把握できたと回答した.しかし,教員の数に対して学生の数が圧 倒的に多い場合は,この手法は効率的に学習状況を把握する方法とは言えない.

(14)

3 提案手法

本論文では,プログラミングの開発環境,自動採点機能,学習状況把握機能を有したウェブシステム,Waseda

Online Judge,WOJを提案する.以下に,設計思想とそれに基づいたそれぞれの機能の設計を記す.

3.1 設計思想

プログラミング授業を支援するシステムWOJの設計思想について議論する.プログラミング授業に必要と される支援の要件は,授業方針,内容,教員,学生などによって変わりうる要件(以降,非共通要件と呼ぶ)

と,変わらない要件(以降,共通要件と呼ぶ)に分けることができる.

共通要件の例として,自動採点機能や学習状況把握機能が挙げられる.自動で採点することによって教員の 負担を軽減すること,学生の学習状況を把握することは,どの授業においても有益である.非共通要件の例と して,フィードバックの仕様や,学習状況を把握する際の分析手法が挙げられる.これらの要件は2.3節で述 べた通り,授業によって変わりうる.

上記のように,共通要件を満たすことは常に有益であるが,非共通要件に対して固定の手法を適用すること は適切ではない.非共通要件に対しては,固定の手法をとるのではなく,異なる手法を適用できるような柔軟 性を持ち,拡張できるべきである.

以上を踏まえて,WOJの設計思想は,共通要件を満たす機能を実装する.そして,変わりうる非共通要件 に対しては,様々な要件の変化に対応できるような枠組みを提供する.これにより,すべてのプログラミング 授業において必要な共通の要件を満たし,共通でない要件に対しては拡張することで対応できるようにする.

3.2 開発環境

プログラミング授業において,学生がプログラミング開発環境を導入することは難しい作業である.2.3.1 小節で述べた通り,既存研究ではウェブシステム上に開発環境を構築することにより,学生が自分の端末に開 発環境を構築する必要をなくした.しかし,既存のシステムではすべての基本的なプログラムを扱うことがで きない.求められる要件は,基本的なプログラムを扱えるようにすることである.

そして,初学者にとってはウェブシステム上の開発環境を利用することは有益だと言えるが,プログラミン グ経験者にとっては必ずしもそうだとは言えない.自分の端末内に構築した環境に慣れている場合は,その環 境でプログラムを作成した方が学生にとって有益である.しかし,後述する自動採点を考慮すると,採点する 環境と開発した環境とが異なることから,自動採点を正しく行えない可能性がある.そのため,自分の端末内

(15)

以上を踏まえて,WOJでは次の2つの方針を採用することにした.1つ目は,WOJでは既存研究と同様に,

システム上にプログラム開発環境を用意し,ウェブブラウザを通してプログラミングを行えるようにする.開 発環境上で行える操作は,ファイルとフォルダの作成,削除,移動,名前の変更,プログラムのコンパイル,

実行,提出である.コンパイルについて,複数のファイルで構成されるプログラムのコンパイルやコンパイル オプションの設定も可能である.実行について,標準入出力以外にもコマンドライン入力,ファイル入出力,

エラー出力に対応する.プログラミングをする際に,必要なのはインターネットへの接続のみになる.これに より,学生は自分の端末内に開発環境を導入する必要がなくなる.システム上の開発環境を利用することで 基本的なプログラムの作成を行えるからである.コンパイル,実行などの操作は外部のサービスを利用せず,

WOJ上ですべて実行する.それにより,外部との通信が発生しないため,より速くこれらの操作を行うこと がことができる.また,その他の利点として,作成したプログラムはWOJ上に保存される為,使用している 端末に関係なく自分の作成したプログラムを扱うことができる.

2つ目は,ファイルのアップロード機能を備える.プログラミング経験者が自分の端末内でプログラムを作 成し,WOJ上にアップロードして,プログラムの挙動のチェックを行うためである.これにより,普段慣れ親 しんでいる環境でプログラムを開発するという選択肢も学生に与えることができる.

3.3 自動採点

学生が提出したプログラムを,教員が11つ正しい挙動をしているか確認する作業は,非常に時間のかか る作業である.プログラムの採点を自動化することは,プログラミング授業を支援する共通要件と言える.開 発環境と自動採点機能を同一システム上に構築することにより,環境の差異によるプログラムの挙動の違いに よって発生していた問題がWOJでは発生しない.以降,自動採点について,採点可能なプログラム,フィー ドバックの観点から議論する.

3.3.1 採点可能なプログラム

2.3.2小節で述べた通り,既存手法では,テストケースによる自動採点によりこの問題を解決しているが,す

べての基本的なプログラムを採点することができない.プログラミングの主要な学習は,実践的なプログラミ ング演習を通して行われる[3]ことを考えると,これは大きな問題である.

そこで,WOJではテストケースによる自動採点機能を取り入れる.そして,既存手法では採点が不可能で あったプログラムにも対応し,すべての基本的なプログラムを採点できるようにする.従来のシステムを利用 した際には課題として出題できなかった様々な入出力を用いた問題を課すことができる.

(16)

そこで,WOJでは様々なフィードバックの方法を取り込めるような枠組みを提供する.WOJのプラグイン を開発することで,授業の方針にあったフィードバックを適用できるようにする.今回は,例として提出され たプログラムの出力と正解の出力との差分を表示するプラグインを開発した.これにより,学生は自分のプロ グラムの出力の誤りに容易に気づくことができると期待される.

3.4 学習状況把握

学生の学習状況を把握することは非常に重要である.2.3.3小節で述べた通り,学生の学習状況を把握する ことを目的とした既存研究は多数あり,それぞれが独自の観点から分析をしている.それぞれの手法間の優劣 を比較することは難しく,どの分析手法を採用するかという要件は授業により変わりうる.

そこで,WOJ上での学生の行動を記録することで,様々な手法による分析を行える枠組みを提供する.記 録する行動は,すべてのファイル操作,コンパイル,プログラムの実行,採点である.また,学生が実行した プログラムと入出力,提出したプログラムを記録する.WOJのプラグインを開発することで,蓄積された学 生のデータを分析できるようにするのである.これにより,WOJ内に蓄積されたデータを利用して,既存手 法の適用や新たな分析手法の模索を行うことができる.今回は,例として学生の行動の時系列表示,それぞれ の行動回数の統計,実行したプログラムの検索を行えるプラグインを開発した.

(17)

4 システムの設計

4.1 対象

4.1.1 利用者

WOJの利用者は,管理者,教員及び学生に分けられる.

4.1.2 適用対象

原理的にはどんなプログラミング言語にでも対応できる枠組みを用意する.その枠組みの中に,特定言語の 処理系を組み込めるようにした.今回開発したWOJでは,CとC++の処理系だけを組み込んである.

4.1.3 アカウント

本システムを利用する為にはアカウントが必要である.アカウントは表4.1に示した情報で構成されている.

各アカウントは管理者権限,教員権限,学生権限の3種類のうち少なくともひとつを持つ.

表4.1: アカウントの情報 データ名 説明

学籍番号 学籍番号 ユーザID 利用者のID 名前 利用者の名前 パスワード パスワード

権限 学生権限/教員権限 /管理者権限の別を記す

(18)

4.2 仕様

4.2.1 ログイン

利用者は図4.1に示したログインページにて個々のアカウントでログインを行う.ログイン時に入力する情 報はユーザIDとパスワードである.ログインに成功するとメニューページに遷移する.

図4.1: ログインページ

4.2.2 メニュー

図4.2にメニューページを示す.権限に応じて異なる画面表示が行われる.学生権限の場合,利用者が履修 している授業の一覧,「履修授業一覧」が表示される.教員権限の場合,利用者が担当している授業の一覧,「担 当授業一覧」が表示される.管理者権限の場合,「管理者メニュー」が表示される.図4.2は,全権限を持って いる利用者のメニューページである.

(19)

図4.2: メニューページ

(20)

4.3 管理者用機能

管理者権限を持つ利用者のみが利用できる管理者用機能を説明する.管理者はユーザ管理及び授業管理を行 うことができる.図4.2のメニューページにおけるユーザ一覧リンクからユーザ管理ページへ,授業一覧リン クから授業管理ページへ遷移できる.

4.3.1 ユーザ管理

図4.3にユーザ管理ページを示す.ページの上部には,ユーザを追加するためのボタンが置かれている.ペー ジの下部には,登録されているユーザを一覧したテーブルが置かれている.

ユーザ追加

ページ上部の「追加」ボタンから,ユーザ追加ページへ遷移しユーザの追加が行える.また,「CSVで追加」

ボタンをクリックし,登録したいユーザの情報を記したCSVファイルをアップロードすることで,ユーザの 一括追加ができる.

ユーザ編集

ユーザを一覧したテーブルにおいて,編集リンクをクリックすると,ユーザ編集ページへ遷移し,該当ユー ザの情報の編集が行える.

ユーザ削除

ユーザを一覧したテーブルにおいて,削除リンクをクリックすると,該当ユーザを削除できる.

(21)

図4.3: ユーザ管理ページ

(22)

4.3.2 授業管理

図4.4に授業管理ページを示す.ページの上部には,授業を登録するためのボタンが置かれている.ページ 下部には,これまでに登録した授業を一覧したテーブルが置かれている.

授業追加

ページ上部の「追加」ボタンから,授業追加ページへ遷移し授業の追加が行える.ここでは授業名を入力 する.

授業編集

授業を一覧したテーブルにおいて,編集リンクをクリックすると,授業情報編集ページへ遷移し,授業情報 の編集が行える.

授業削除

授業を一覧したテーブルにおいて,削除リンクをクリックすると,該当授業を削除できる.

履修情報編集

授業を一覧したテーブルにおいて,履修情報編集リンクをクリックすると,授業の履修者,担当教員などの 履修情報を編集できるページへ遷移する.

(23)

図4.4: 授業管理ページ

(24)

4.4 教員用機能

教員権限を持つ利用者のみが利用できる教員用機能を説明する.教員は担当授業一覧に表示されている授業 名をクリックすることで,担当授業ページへ遷移できる.

4.4.1 担当授業ページ

図4.5に担当授業ページを示す.ページ上部には,各種ボタンが置かれている.ページ下部には,課題を一 覧したテーブルが配置されている.

課題追加

ページ上部の「追加」ボタンから,課題追加ページへ遷移し,課題の追加ができる.ここでは,課題名,課 題内容,開始時刻,締切時刻,再提出可否を入力する.

課題編集

課題が一覧されているテーブルにおいて,課題編集リンクをクリックすることで,課題編集ページに遷移し,

課題の各情報を編集することができる.

テスト環境

テスト環境リンクからはテスト環境ページへ遷移できる(4.4.2小節 参照).

提出状況

提出状況リンク,不合格者の提出状況リンクからはそれぞれ提出状況ページ(4.4.4小節 参照),不合格者 の提出状況ページ(4.4.5小節 参照)へ遷移できる.

プログラムのダウンロード

「DL」ボタンをクリックすると,学生が提出したプログラムをダウンロードできる.

星取り表

ページ上部の「星取り表」ボタンから星取り表ページ(4.4.6小節 参照)へ遷移できる.「星取り表CSV ウンロード」ボタンから星取り表をCSV形式でダウンロードできる.

(25)

ログ検索

「学生のログ」ボタンからログ検索ページ(4.4.7小節 参照)へ遷移できる.

図 4.5: 授業ページ

(26)

4.4.2 テスト環境ページ

図4.6にテスト環境ページを示す.ページ上部に課題内容,中部に開発メニュー,下部にプログラム開発エ リアがある.

開発メニュー

開発メニューについて,コンパイルタブをクリックすると図4.7のコンパイルメニューが表示される.追加 ボタンをクリックすることで現在開いているファイルが,コンパイルするファイルに追加される.リセットボ タンをクリックすることで,コンパイルするファイルをリセットできる.コンパイルボタンを押すことで,コ ンパイルが実行される.

実行タブをクリックすると,図4.8の実行メニューが表示される.図のようにコマンドライン入力,標準入 力を入力し実行ボタンをクリックすると,実行結果の欄にプログラムの実行結果が表示される.プログラムの 実行結果として,実行時間,標準出力,エラー出力が表示される.

採点タブをクリックすると,図4.9の採点メニューが表示される.採点するボタンをクリックすると,自動 採点が行われる.合格の場合は「合格:100点」と表示される.不合格の場合は図のように点数と失敗例が表 示される.失敗例として,プログラムが正しく動作しないテストケースについて,コマンドライン入力,標準 入力,プログラムの実行時間,標準出力,正解の標準出力,エラー出力,正解のエラー出力,正解との出力の 差分が表示される.

設定タブをクリックすると,図4.10の設定メニューが表示される.エディターのテーマを選択できる他,コ ンパイルオプションの設定ができる.

プログラム開発エリア

プログラム開発エリアは,左部のファイル管理エリアと右部のエディターエリアに分けられる.ボタンを利 用して,プログラムの作成・削除・リネーム,フォルダの作成・削除・リネームを行える.そして,プログラ ムをクリックすることで,図の右部に示されているエディターが表示される.このエディター内でプログラム を編集することができ,保存ボタンにより編集内容を保存できる.

4.4.3 テストケースの設置

テスト環境にtestcase.txtという名前のファイルを作成することによりテストケースを設置できる.testcase.txt が作成されていない場合,満たすべきテストケースがないと判断し,提出すれば無条件に合格となる.テスト ケースの記述方法はBNFで表すと図4.11のように定義できる.

(27)
(28)

図4.7: コンパイルメニュー

(29)
(30)

図4.9: 採点メニュー

(31)

図 4.10: 設定メニュー

(32)

図 4.11: テストケースのBNF

(33)

4.4.4 提出状況

図4.12に提出状況ページを示す.ページ上部には合格者,不合格者,未提出者の割合が円グラフで表示され る.また,履修生が提出したプログラムと採点結果を全て閲覧できる.そして,学生とメッセージのやり取り が行える.

4.4.5 不合格者の提出状況

図4.13に不合格者の提出状況ページを示す.基本的には提出状況ページと同じだが,既提出者,未提出者の 割合を円グラフで表示している.

4.4.6 星取り表

図4.14に星取り表ページを示す.全履修生の課題の合格,提出状況が一目で分かる.行が学生,列が課題で あり,セルの中には合格なら○,不合格なら△,未提出なら×が表示される.また,それぞれセルの色が異な り,合格なら青,不合格なら黄,未提出なら赤色で表示されている.括弧内の数字は提出回数を表している.

セル内をクリックすることで,該当する提出状況ページに遷移できる.

4.4.7 ログ検索

図4.15にログ検索ページを示す.学生のあらゆるログを解析できるページである.画面のタグをクリック することにより,実行ログ,行動ログ,行動ログ統計,ログインログの閲覧,検索が行える画面を表示できる.

図4.15では実行ログを選択した状態になっている.

この画面では学生がどのようなプログラムを実行していたかの履歴を検索できる.条件を指定して検索ボタ ンをクリックすると,指定した条件に一致する学生の実行履歴を表示する.図4.16に検索結果例を示す.

図4.17に行動ログ検索画面を示す.学生の行動を時系列に表示できる.条件を指定して検索ボタンをクリッ クすると,指定した条件に一致する学生の行動履歴を表示する.図の下部に表示されているような検索結果が 表示される.

学生の各行動の合計回数を表示する行動ログ統計画面を図4.18に示した.図のように課題ごとの各学生の 各行動の回数が表示される.

図4.19にログインログ検索ページを示す.学生のログイン履歴を閲覧することができる.

(34)

図4.12: 提出状況ページ

(35)
(36)

図4.14: 星取り表ページ

(37)

図4.15: ログ検索ページ

(38)

図4.16: 実行ログ検索結果例

(39)
(40)

図4.18: 行動ログ統計画面

(41)

図4.19: ログインログ検索ページ

(42)

4.5 学生用機能

学生権限を持つ利用者のみが利用できる学生用機能を説明する.学生は履修授業一覧に表示されている授業 名をクリックすることで,履修授業ページへ遷移できる.

4.5.1 履修授業ページ

図4.20に履修授業ページを示す.課題の一覧が表示されている.開発環境リンクから開発環境ページへ,提 出履歴リンクからは提出履歴ページへ遷移できる.

図4.20: 履修授業ページ

4.5.2 開発環境

開発環境は,図4.6に示したテスト環境ページと同じ画面構成である.そして,テスト環境ページと同様の

(43)

4.5.3 提出履歴

図4.21に提出履歴ページを示す.他の履修生の合格状況,利用者が提出した全てのプログラムと採点結果を 閲覧できる.そして,教員とコメントによりコミュニケーションが行える.

(44)

図4.21: 提出履歴ページ

(45)

5 実装

5.1 前提知識

WOJでは,開発環境を実現するために,Ace.js[43]というJavaScript製のエディターを利用している,ま た,利用者が開発したプログラムの実行をセキュアな環境下で行うためにIsolate[44]を利用している.それぞ れについて,解説を行う.

5.1.1 Ace.js

Ace.jsはオープンソースのJavaScript製のエディタである.ブラウザ上で動作し,基本的なテキスト編集だ

けでなく,検索や置換,各言語のシンタックスハイライトが備わっている.Github[45]上で日々開発が行われ ており,「https://github.com/ajaxorg/ace」にアクセスすることで最新のソースコードを閲覧,取得すること ができる.

5.1.2 Isolate

Isolate[44]は,サンドボックスを作成,利用するためのモジュールである.サンドボックスとは,コンピュー

タシステムを保護するためにソフトウェアの動作が制限された領域のことを言う.Isolateを利用して,保護さ れた領域,サンドボックス内で利用者の開発したプログラムを実行する.IsolateもGithub上で日々開発が行 われており,「https://github.com/cms-dev/isolate」にアクセスすることで最新のソースコードを閲覧,取得 することができる.

5.2 開発環境

ファイル管理

(46)

た,操作内容,この例では「hello2.c」に名前を変更するということをサーバに送信する.そして,サーバ内 の利用者のフォルダ内にある「hello.c」を検索し,hello2.c」という名前に変更している.

エディター

プログラムを編集するエディターを実装するために,Ace.jsを利用した.また,利用者が開いているプログ ラムに合わせて,適切なシンタックスハイライトを設定する必要がある.そのため,利用者が現在開いている プログラムのファイル名の拡張子からプログラミング言語を判断し,Ace.jsが提供しているシンタックスハイ ライトを設定している.

WOJ上のエディターには,Redo,Undo機能がある.これらもAce.jsが提供しているAPIを利用して実現 をした.

コンパイル・実行

利用者が開発したプログラムは,サーバ内でコンパイル,実行される.そのため,プログラムのコンパイ ル,実行はセキュリティの観点から,セキュアな環境下で行う必要がある,なぜなら、プログラムに悪意のあ るコードが含まれているとサーバを乗っとられたり、破壊される恐れがあるためである.

そのため,Isolateを利用しサンドボックスを作成した.利用者のプログラムは全てサンドボックス内でコン パイル,実行される.これにより,サンドボックス外のファイルにアクセスすることが不可能であるため,悪 意のあるコードが含まれていてもシステム自体に影響を及ぼすことがない.

5.3 自動採点

WOJではプログラムの提出を受け付けると,以下の手順に従い採点を行う.

コンパイル

WOJではプログラムの提出を受け付けると,始めにコンパイルを行う.コンパイルエラーが起こった場合 は,コンパイラのエラーメッセージを提出者に表示し不合格とする.

テストケースの読み込み

コンパイルが正しく通った場合は,図4.11に示した書式のテストケースを読み込み,それに従い順次プロ グラムを実行し,テストを行う.

(47)

テスト

テストは,テストケースに従って入力を行い,正しい出力が行われたかを確認する.プログラムの実行に5 秒以上かかる場合はタイムアウトし,その旨を提出者に表示し不合格とする.テスト結果はすべてDBに保存 している.

5.4 学習状況把握

WOJ内での利用者の行動を逐一,ログファイルに書き込んでいる.書き込む内容は,時刻,操作内容,学 籍番号,権限,操作の詳細である.学習状況の把握は,これらのログファイルを解析することで実現できる.

ログファイルの例を図5.1に示す.左から順に,操作時刻,操作内容,学籍番号,権限,課題ID,詳細と なっている.操作時刻の次に表示されている文字列は操作内容を表している.ログファイルにおける操作内容 の表記を表5.1に示した.その次の文字列は操作を行った利用者の学籍番号を表す.そして,次のstudentは 権限を表す.教員権限の場合はteacher,管理者権限の場合はadminとなる.次の数字は課題IDを表し,ど の課題において操作をしたかがこれによりわかる.一番最後の文字列である詳細は,操作内容により異なる.

図の例における14行目では,操作対象のファイルを表す.例の場合,「test.c」に対して操作を行っている.

図の5行目である採点においては,採点結果の点数を表す.例の場合,100点を取得している.

図5.1: ログファイルの例

(48)

表5.1: ログファイルにおける操作内容の表記

表記 操作内容

Activity: [GetProgram] プログラムを開く Activity: [NewFile] ファイル作成 Activity: [DeleteFile] ファイル削除 Activity: [RenameFile] ファイル名変更 Activity: [NewFolder] フォルダ作成 Activity: [DeleteFolder] フォルダ削除 Activity: [RenameFolder] フォルダ名変更 Activity: [SaveProgram] プログラム保存 Activity: [Compile] コンパイル Activity: [Mark] 採点

(49)

6 評価実験

6.1 評価実験概要

提案手法の有用性を示すために,比較実験と実用実験を行った.比較実験では,既存システムと比較した WOJの有用性を確かめるために,WOJと既存システムと機能の比較を行った.実用実験では,大学の授業に 導入し利用した学生にアンケートをとった.

6.1.1 比較実験

既存システムとの比較をすることによりどのような面で違いがあり,どのような面で優れているか調査した.

比較対象は,表2.1,表2.2,表2.3のシステムとする.比較項目を以下に示す.

対応言語

対応しているプログラミング言語の種類を表す.5種類以上のプログラミング言語に対応している場合 は多と記す.理論上,対応可能な場合も多と記す.

開発環境

基本的なプログラムを扱うための開発環境,プログラムのアップロード機能がある場合○をつける.基 本的なプログラムの一部のみ扱える場合や,機能が不足している場合△をつける.

自動採点

基本的なプログラムを採点する機能が備わっている場合この項目に○をつける.基本的なプログラムの 一部のみ採点できる場合△をつける.

フィードバック

あらゆる要件に対応するための枠組みが備わっている場合この項目に○をつける.固定の手法を適用し ている場合△をつける.採点結果やプログラムの実行情報などの基本的な情報のみを表示している場合

×をつける.

(50)

6.1.2 実用実験

本大学における1年生の必須科目,Cプログラミング入門の授業において,システムを約3ヶ月使用した.

授業の履修者は95名である.その約3ヶ月の間に,教員は合計14回の授業でプログラムの演習課題を44題出 題した.複数ファイルで構成されるプログラムを除く,すべての基本的なプログラムを課題として学生に課し た.学生はWOJ上でプログラムを作成し,実行を約20000回,提出を15845回行った.学生たちは十分WOJ を利用したと言える.

その後,学生にアンケートをとり,58名が回答した.アンケートの内容は,開発環境に関する質問,自動採 点に関する質問,有効性に関する質問に分けられる.それぞれの内容を表6.1,表6.2,表6.3に示す.

表6.1: 開発環境に関する質問 質問1:あなたのプログラミング学習経験を教えてください (a)授業で初めてプログラミングをした

(b)半年未満 (c) 1年未満 (d) 2年未満 (e) 2年以上

質問2:WOJの開発環境に,十分な機能が備わっていましたか

(a)十分備わっていた (b)備わっていた (c)不足していた (d)かなり不足していた

質問3:不足していた,かなり不足していた,と回答した方へ,不足していた機能を教えてください

質問4:WOJでプログラミングをする前に特別に使い方を学ぶ必要がありましたか

(a)学ぶ必要があった (b)やや学ぶ必要があった (c)あまり学ぶ必要がなかった (d)学ぶ必要がなかった

(51)

表6.2: 自動採点に関する質問

質問5:採点をして不合格であった場合に表示されるフィードバック(下に例を示す)は役に立ちましたか (a) 役に立った

(b) やや役に立った

(c) あまり役に立たなかった (d) 役に立たなかった

質問6:あまり役に立たなかった,役に立たなかった,と回答した方へ,そう思った理由を教えください

表6.3: 有効性に関する質問

質問7:WOJはプログラミング等の演習授業において有効だと思いますか

(a)思う (b)やや思う (c)あまり思わない (d)思わない

質問8:今後のプログラミング授業においても,WOJを利用したいですか (a)利用したい

(b)やや利用したい (c)あまり利用したくない (d)利用したくない

(52)

6.2 実験結果

6.2.1 比較実験結果

比較結果を表6.4に示す.

表6.4: 比較項目

対応言語 開発環境 自動採点 フィードバック 学習状況把握

WOJ 多 ○ ○ ○ ○

CMS [9] 多 × △ × ×

Aizu Online Judge[10] × × ×

PKU Online Judge[11] C/C++/ Java/Fortran × × ×

UVa online Judge[12] C/C++/Java/Pascal × △ × ×

Sphere Online Judge[13] 多 × △ × ×

A2 Online Judge[14] × × ×

CodeFoeces [15] × × ×

Dom Judge[16] 多 × △ × ×

GAME [17] C × △ × ×

石川[19] C × ×

石原[20] C × ×

Submit[21] Java × △ △ ×

Course Maker[22] C/C++/Java × △ △ ×

BOSS[23] C/C++/Java × ×

Mooshak[24] × ×

Roboprof[26] 多 × △ △ ×

Game-2+[27] C/Java × △ × ×

上野[30] C △ △ × △

井垣[31] ×

加藤[32] ×

蜂巣[33] 多 △ △ × △

(53)

6.2.2 実用実験結果 開発環境

開発環境に関する質問,質問1,質問2,質問4の集計結果を図6.1,図6.2,図6.3に示した.質問3につ いて,質問2にて「不足していた」と回答した11名が回答した.以下に回答の要約を示す.

コンパイルエラーが日本語で出てこないこと

time指令などがないこと

error表示について,どこの行にエラーがあるのか程度は分かったがそれ以上は分かりにくかった自分の

能力不足のためにどう改めればいいのか分からない.訂正の指針が少しでも与えられたら嬉しい.

エラーが分かりにくい.どこにカーソルがあるのかわからないのでかなり使いにくい

学校のPC環境を用いて利用するとマウスポインタがずれていてやりにくかった

centOS環境だと入力地点がずれることがとても不便だった

カーソルがずれることがあった

カーソルがずれていた

文字入力がズレる.

コンパイルオプション(-lmなど)の追加は助かりました.sin関数の実行ができず困ったことがありま した

括弧の自動補完をするか否かの設定がほしいと思いました

(54)

図6.1: 実用実験における質問1の集計結果

(55)

図6.3: 実用実験における質問4の集計結果

(56)

自動採点

自動採点に関する質問,質問5の集計結果を図6.4に示した.質問6について,質問5にて「あまり役に立 たなかった」「役に立たなかった」と回答した3名が回答した.以下に意見の要約を示す.

間違えている理由が余りわからなかった

よくわからなかった点があった

ヒントが与えられていないともう一回頑張ろうと思わなくなる

図6.4: 実用実験における質問5の集計結果

(57)

有効性

有効性に関する質問,質問7,質問8の集計結果を図6.5,図6.6に示した.

図6.5: 実用実験における質問7の集計結果

(58)

図6.6: 実用実験における質問8の集計結果

(59)

質問9の意見について,質問8にて「利用したい」「やや利用したい」と回答した学生の回答理由は,図6.7 のように分けられた.

図6.7: WOJを今後も利用したい学生の理由

開発環境を回答理由に挙げている学生の一部の回答内容を以下に示す.

ブラウザ一つで,学外のどの端末からでもソースコードの編集や課題提出ができるのは便利でした

ソースの構築からコンパイル,実行まで簡単にでき,使いやすいから

Windowsなど,容易にC言語を使ってプログラムを作動させることが出来ない環境では,WOJはすぐ

に動かしたり容易に修正が出来るのが大きい

自動採点を回答理由に挙げている学生の一部の回答内容を以下に示す.

すぐ採点がでるから

自動でプログラムを複数の条件で評価してくれるから

答えがすぐわかり,失敗例もでるし,自分のミスに気が付きやすい

(60)

自分の作ったプログラムがあっていたのかすぐにわかるし,家のwindows環境のパソコンでもプログラ ムが容易に作れるから

システム全体に分類した回答は,「便利であるから」といったシステム全体を理由に挙げたものを指す.

質問10に対して,10名が回答した.以下に回答内容を示す.

ぜひすべての情報系科目でこの様な提出サイトを使ってください

ソースコードがサーバ上にあるため,自宅でもコンピュータ室と同様の作業ができるのがとても便利 だった

自動判定システムは便利でした

とてもつかいやすかったです

よかったです

フィードバックはかなり役に立った

先生に直接ソースファイルを渡す授業の方がいいです

使い方が簡単だったのですぐに利用することができました

もう少しステップを踏みつつ勉強を進めることができるようなシステムを作ってほしいと感じました

自動判定システムはユニークだと思いました.ただ,Linuxで開いた時に文字とカーソルの位置がずれ ていて,直接書き込めないのが不便だと思いました

(61)

7 考察

7.1 比較実験結果の考察

表6.4の実験結果を考察する.開発環境について,基本的なプログラムを開発できる開発環境を持ち,アッ プロード機能を備えているのはWOJだけである.一部のシステムでは開発環境を備えてはいるが,不十分で あるのがわかる.

自動採点について,基本的なプログラムをすべて採点可能であるのはWOJだけである.既存のシステムで は,一部の基本的なプログラムしか採点ができない.そして,フィードバックについて,様々な要件に対応す るためにあらゆる手法を適用可能な枠組みを提供しているのもWOJだけである.既存のシステムは,固定の 手法を取っているため,要件の違いに対応できない.

学習状況把握について,WOJのみが様々な分析手法を適用する枠組みを備えている.既存の研究では,固 定の手法を取っているため,表6.4において,○が記されているシステムは1つもない.

対応言語,開発環境,自動採点,フィードバック,学習状況把握のすべての観点において,WOJが最も良 いシステムであると言える.

7.2 実用実験結果の考察

図6.1より,授業の履修者のほとんどが初学者であることがわかる.

開発環境について,図6.2より,80%以上の学生がWOJの開発環境には十分な機能が備わっていると考え ているのがわかる.実際に,既存システムが対応していなかったファイル入出力やコマンドライン入力を利用 する課題を授業で課したが,学生はWOJ上で問題なく開発していた.「不足していた」と回答した11名の回 答理由について,ほとんどがカーソルがずれる問題を指摘していた.これは利用しているブラウザが極端に古 い場合に見られた現象である.WOJの開発環境における本質的な問題を回答理由に挙げている学生がいない ことがわかる.以上より,WOJの開発環境は授業を支援するのに十分であったと言える.

図6.3より,約50%の学生がWOJを利用する前に使い方を学ぶ必要があったと回答している.WOJを利用 する前に,学生にWOJの利用方法を教える必要があることがわかる.実際に,実用実験では,授業前にWOJ

(62)

有効性について,図6.5,図6.6より,約90%の学生がWOJはプログラミング演習授業に有効で,今後も利 用したいと考えているのがわかる.図6.7より,学生は開発環境を構築する必要がないこと,提出後に自動で 採点されるため即座に回答結果がわかること,またその場ですぐに修正できることを高く評価しているのがわ かる.そして,質問10に対する回答より,大半の学生はWOJを有用だと考えているのがわかる.

表 2.1: 競技プログラミングのコンテストを支援する研究の機能
表 2.2: プログラムの採点に着目した研究の機能 システム名 対応言語 自動採点 フィードバック GAME C ○ 石川 C ○ テストケース 石原 C ○ テストケース / フィードバックコメント Submit Java ○ テストケース / 解析結果
表 2.3: 開発環境及び学習状況の把握に着目した研究の機能 システム名 対応言語 自動採点 開発環境 学習状況把握 上野 C × ○ ○ 井垣 多 × ○ ○ 加藤 多 ○ ○ ○ 蜂巣 多 × ○ ○ 2.3 問題点 上記で述べた研究が掲示したプログラミング授業における問題点を整理すると,以下のようになる. • 初学者にとってプログラミング開発環境を導入することは難しい • 学生が提出したプログラムを採点する作業は教員にとって重荷である • 学生の学習状況を詳細に把握することは難しい 以降,本論文では上
図 4.2: メニューページ
+7

参照

関連したドキュメント