プログラミング系科目用オンラインジャッジシステムの構築と評価 - 平成26年度全国

プログラミング系科目用オンラインジャッジシステムの構築と評価
熊本高等専門学校
1.まえがき
本校は,平成 21 年 10 月,旧八代高専と旧熊本電
波高専の高度化再編により誕生した.現在,八代キ
ャンパスには機械知能システム工学科・建築社会デ
ザイン工学科・生物化学システム工学科の 3 学科が
置かれており,どの学科も情報系は専門ではない.
しかし,
「ICT に関する基本的な技術および工学への
応用技術を身に付けた技術者を育成する」という育
成目標を達成するため,すべての学科でプログラミ
ング教育が行われている.
そこで,情報系を専門としない学生に,どうやっ
てプログラミングを学んでもらうかという問題が生
じる.プログラミングの技術を習得するためにはソ
ースコードを実際に書くことが重要であるが,週一
回の授業だけでは,演習のために十分な時間を確保
することが難しい.そこで我々は,学生がいつでも
容易にプログラミングを実践できる環境を作ること,
また学生に学習意欲を持ってもらうことを目的に,
オンラインジャッジシステムを構築し,授業の中に
取り入れた 1).このシステムは平成 24 年度から運用
を開始し,今年で 3 年目を迎える.学生たちの意見
をもとに改良した点や,実際の使用環境に関するア
ンケートの結果について報告する.
2.システム構成と機能
本システムは Python,Python の Web フレームワー
クである Django および Perl で実装した.アカウント
の照会には,学内 LDAP サーバを用いることで,新
規登録やパスワード変更の手間を省いた.
ユーザは学生・教員・管理者に分類される.学生
ユーザは,課題を閲覧・提出する.提出したソース
コードをシステム上に保存するため,学生は使用す
る端末を変更しても,続きから課題に取り組める.
システムは提出されたプログラムを実行し,結果を
学生にフィードバックする.正誤判定は,教員が作
成する複数の入力でテストしており,学生が自身で
テストする場合と比べ厳密なものとなっている.ま
た,提出時にソースコードのコーディングスタイル
をチェックし,問題があれば指摘する.教員ユーザ
は,システムに課題をアップロードする.また,自
身が担当する講義を受講する学生のグループを作成
し,成績を管理する.さらに,学生が提出したソー
スコードや,過去に提出されたソースコードとの類
似度を示す表を閲覧できる.管理者ユーザは,ユー
ザの権限変更をおこなう.
○岩本舞,小島俊輔,米沢徹也
3.本システムの特色
我々は平成 24 年度より,本システムを授業で使用
している 3 年次の学生に対し,本システムについて
のアンケートを実施している.アンケートで得られ
た学生の意見は,実際にシステムに反映し,様々な
工夫を行ってきた.ここではその一例を示す.
3.1 意欲を持たせるための工夫
当初,本システムでは最新の提出履歴(ユーザ名,
課題番号,結果等)を全ユーザに開示していた.こ
の機能は,他の学生の進捗状況を知ることにより,
競争心を高めることを目的としていたが,当初から
「自分が不正解だったことをみんなに知られるのが
嫌で,提出をためらってしまう」という指摘があり,
この機能は教員ユーザ限定とした.この他にも,過
去に提出したソースコードや課題ごとの正答率の表
示といった,不正解の履歴が残るような要素は極力
排除するよう努めている.また,図 1 のように問題
と成績のページを統合し,すでに正解した問題と現
在取り組んでいる問題が一目でわかるようにした.
さらに,平成 25 年度のアンケートで「毎週課題が
増えるのは精神的に辛い」という意見が出たため,
現在は前期の授業に関連する問題をすべて表示し,
学生が課題を自分のペースで進められるようにして
いる.また,達成率を目に見える形で表示すること
で,自分がどこまで課題を進めているかが一目でわ
かり,こつこつと課題をこなすことによる達成感が
得られるようになっている.実際に,学生のアンケ
ートでは「達成感がある」という意見が見られた.
他にも,すでに正解しているユーザの数を表示する
ことで,お互いの競争心を高めており,学生からは
「正解した人数から,自分の実力がわかる」といっ
た意見が出た.
3.2 コーディングスタイルチェック
本校の授業では C 言語を使用している.C 言語で
は,インデントがプログラムの動作に影響しないた
め,インデントをつけることに無頓着な学生が見ら
れる.しかし,インデントを適切につけないと,ソ
ースコードの可読性が下がり,プログラムの構造に
対する理解もあいまいになってしまう.このことが,
学生の理解を妨げる一因となっている.
そこで本システムは,学生がソースコードを提出
した際に,インデント等のチェックをおこない,問
題があれば図 2 のように指摘する.指摘は,重要度
に応じて色分けしている.
【連絡先】〒866-8501 熊本県八代市平山新町 2627 熊本高等専門学校 技術・教育支援センター
岩本舞 TEL:0965-53-1317 FAX:0965-53-1317 e-mail:
【キーワード】プログラミング教育,オンラインジャッジ,不正コピー,コーディングスタイル
機能を必要以上に怖がってしまい,他の学生のコピ
ーと検出されないように一般的でないプログラムの
書き方をするといった弊害も出たため,運用には慎
重になる必要がある.
4.利用状況
平成 26 年度 5 月のアンケートでは,学生が実際に
はどのように本システムを利用しているのかを調査
した.利用についてのアンケート設問を図 3 に示す.
Q1 では,98%の学生が,パソコン(4%)かスマート
図 1 課題一覧の例
デバイス(13%),あるいはその両方(82%)を所持して
いると回答した.本システムは Web ブラウザで利用
できるため,ほとんどの学生は本システムを自宅等
でも使用できることが分かる.
Q2 では,88%の学生が自宅等のパソコンで本シス
テムを利用している.タブレット端末での使用は 7%
にとどまったが,スマートフォンでは 11%の学生が
使用していた.スマートデバイスで本システムを利
用しない理由としては,画面が小さいこと,標準キ
図 2 コーディングスタイルチェックの例
ーボードがプログラムを入力するのに向いていない
ことが挙げられた.しかしながら,実際にこれらの
Q1 あなたはパソコンやスマートデバイス(タブレット
環境で本システムを利用していると答えた学生もい
端末・スマートフォン)を持っていますか
るため,使い方次第では電車での移動中といったス
Q2 演習室や寮備え付けのパソコン以外で,本シス
キマ時間の活用も期待できる.
テムを利用している端末を教えてください
Q3 では,
「はい」が 57%,「いいえ」が 43%とい
Q3 本システムにソースコードを入力する前に,手元
う結果になった.自由記述では,本システムに対し
の開発環境でコンパイル・実行しますか
「エラーが分かりづらい」
「デバッグ機能がない」
「エ
図 3 平成 26 年 5 月のアンケート設問(抜粋)
ディタが機能不足」といった意見が見られた.現在
本システムで実装している提出機能は,テキストボ
この機能について,平成 26 年度のアンケートでは,
ックスにプログラムを入力し,コンパイルエラーや
「本システムを使用する以前に比べ,インデントに
実行時エラー,提出された解答と正解を表示すると
気をつけるようになった」と答えた学生が 77%いた.
いうものだが,学生にとっては機能不足に感じられ
しかし,一部の学生からは,本システムに対し「自
ることがわかった.
動インデント機能や入力補完機能が欲しい」といっ
た要望が見られた.これは,学生たちが授業で高度
5.まとめ
な開発環境を使用しているため,このような機能が
本システムを利用した感想として,25%の学生が
あることが当たり前になっているからだと考えられ
「難しい」と回答しているが,これらの学生からも
る.
「力がつく」「達成感がある」「いつでもできて便利
だ」
「面白い」といった肯定的な意見が多く見られた.
3.3 不正コピー検出
学生からは「理解度に合わせたヒントを追加してほ
プログラミングに興味がない学生の中には,課題
しい」
「エラーの内容を分かりやすくしてほしい」と
を課しても,友人の回答のコピーで済ませようとす
いった要望が挙げられている.また,授業との関連
る者が少数ながら存在する.このような行為は,本
付け(授業資料へのリンクなど)を求める声もあっ
人のためにならないばかりか,他の真面目に課題に
た.今後も,学生の意見を取り入れながら,よりよ
取り組んでいる学生の意欲をも削いでしまう.
いプログラミング学習環境を提供していきたい.
そこで本システムでは,「不正コピー検出機能 2)」
を実装している.不正コピー検出プログラムは,提
参考文献
出されたソースコードが格納されたディレクトリを
1) 岩本舞,中村真人,小島俊輔:
「不正コピー検知
巡回し,他のユーザのソースコードと類似している
機能を備えた学習用オンラインジャッジシステ
ソースコードを発見した場合に,双方のユーザ ID と
ムの構築と評価」
,工学教育 Vol.62 No.3, 5 月号,
類似度情報をデータベースに格納する.教員ユーザ
pp.3-8, (2014)
は類似度情報の一覧からユーザと課題を選択するこ
2) Mai Iwamoto, Shunsuke Oshima, and Takuo
とにより,ソースコードの目視比較が可能である.
Nakashima: 「 Token-based Code Clone Detection
この機能はもともと,学生に周知することで,安
Technique in a Student's Programming Exercise」,
易な課題のコピーを抑制することを目的に開発した.
BWCCA(IEEE), pp.650-655, (2012)
実際に 65%の学生がこの機能によって不正が抑止さ
れると回答している.しかし前年度は,学生がこの