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

ヒューリステックを用いた,プログラミング演習用の効率的な自動採点システム

N/A
N/A
Protected

Academic year: 2021

シェア "ヒューリステックを用いた,プログラミング演習用の効率的な自動採点システム"

Copied!
2
0
0

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

全文

(1)1C-3. 情報処理学会第66回全国大会. ヒューリステックを用いたプログラミング演習用の 効率的な自動採点システム 内藤 広志 大阪工業大学 情報科学部 情報メディア科. 1 はじめに. 題がある。また,WBT では,同様なゆれを対処する. 使ったプログラミング演習科目を多く設けている。こ. だけでなく,実行プロファイルや網羅率の計測など多 くの方法が考えられるが [1] ,採点数が多いためより. れらの演習では,演習の進め方と課題を説明したウェ. 効率的な方法が必要である。. 大阪工業大学情報科学部では,C 言語や Java 言語を. プログラミング課題の採点システムは,BBT と WBT. ブ資料を用意し,学生はそれに従って教科書を読み, 課題のプログラムを作成する。当初,課題の採点は教. の両方をサポートすると共に,できるだけ確度のたか. 員がプログラムを読んで行っていた。しかし,毎回 5. い採点を行うテストを容易に作成でき,また,それを. ∼9 個の課題を出題し,履修学生数も 450∼800 名と. 効率的に実行できることが必要である。そのために,. 多いため,この方法は,採点に時間がかかり,採点も. 本システムでは,採点用のチェックパターン(ヒュー. 正確でなくばらつきが大きいという問題があった。そ. リスティック)を提出されたプログラムから試行錯誤. のために,現在は課題を採点するシステムを開発して. 的に抽出して用いる方法をとっている。. 利用している。. 3 システムの概要. 本発表では,採点システムの概要,プログラムを効. 本システムは sh と csh 言語を使って実装され,Linux. 率的に採点するヒューリスティックを用いた採点スク. 上で稼動する。本システムの全体処理フローを図 1 に. リプトの記述法,それを用いた採点法について報告. 示す。. する。 ណὐ䉴䉪䊥䊒䊃. 2 プログラミング課題の採点の問題点 演習の課題では,単にプログラムを作成するのでは なく,各回のテーマに関連した言語機能やアルゴリズ. ឭ಴䊒䊨䉫䊤 䊛. ムを使用することを要求する。たとえば, 「連結リスト. ណὐಣℂ. 䉪䊤䉴䈗䈫䈱 ណὐ⚿ᨐ. のポインタをたどる」というテーマの課題として次を 出題している。. ቇ↢䈗䈫䈱 ណὐ⚿ᨐ. 1. 連結リストの要素の中で一番大きい value メンバの値を返 す getMaxValue 関数を定義します。    LIST_TYPE getMaxValue(void); 2. コマンド引数で指定した値からなる連結リストを生成し, その うちの最大値を実行例のように表示するプログラム workc0.c を作 成しましょう。最大値は getMaxValue 関数を使ってもとめます。  % ./workc0.exe 33 88 11   insert( 0x403010, 33) LIST[ 33 ]   insert( 0xa040858, 88) LIST[ 33 88 ]   insert( 0xa040868, 11) LIST[ 33 88 11 ]  連結リストの要素の値の最大値は 88 です。. このような課題を採点するには,プログラムの入力 データと出力結果の対応を調べる(ブラックボックス テスト,BBT)だけでなく,課題のテーマを理解して いるかを評価するためにプログラムコードを調べるこ と(ホワイトボックステスト,WBT)も必要である。. BBT では,スペルミス,空白の個数,不要な文字な どの出力にゆれがあるため,厳密な比較テストでは問 Automatic Grading of Programming Exercises using Heuristic Rules Naito Hiroshi, Department of Media Science, Faculty of Information Science and Technology, Osaka Institute of Technology. ណὐ䊕䊷䉳䈱 ↢ᚑ. ណὐ䊕䊷䉳. 図 1: 本システムの全体処理フロー 学生は,指定されたディレクトリに提出プログラ ム $TARGET.c を格納する。本システムは,採点のヒ ューリスティックを記述した採点スクリプトを用いて. $TARGET.c の採点処理を行い,採点の結果として「学 生ごとの採点結果」と「クラスごとの採点結果」を生 成する。「学生ごとの採点結果」は,学生に提示する 採点ページ($TARGET.html)を生成するために使用 される。「クラスごとの採点結果」は,採点スクリプ トを作成するときや,教員が課題を詳細に採点すると きに使用される。また,採点結果をキャッシュしてお き,提出プログラムに変更がない場合は採点を行わな いことで処理を高速化している。. 4−345.

(2) 4 採点スクリプトの記述. (1) 提出プログラム $TARGET.c を整形し,コンパイ ルする。 (2) 前チェックファイル $TARGET.pre を実行する。 (3) BBT の $TARGET.sh を実行する。複数のテスト ケースを指定できる。 (4) WBT の $TARGET.pat を実行する。 (5) 採点結果をログに出力する。. 採点スクリプトは BBT ($TARGET.sh) と WBT ($TARGET.pat) にファイルを分けて csh 言語を用いて 記述する。この他に前チェックを行う $TARGET.pre も ある。不必要なものは省略できる。採点スクリプトを grep コマンドなどを使って書くと,テストコードが煩 雑となり,記述も長くなるため,次のマクロスクリプ トを提供している。. • fhaveFunction.sh  関数の定義があるか調べる。 • fhaveOutput.sh  出力の大きさの上下限を調べる。 • fpattern.sh  ソース中にパターンがあるか調べる。 • fpatternInFunction.sh  関数定義中にパターンがあ るか調べる。 • fpatternInOutput.sh  出力中にパターンがあるか調 べる。. 正解の学生に対しては, 「クラスごとの採点結果」と して次のファイルを生成する。. (a) $TARGET.c  ソースプログラムを連結したもの。 (b) $TARGET.out  プログラム出力を連結したもの。 (c) $TARGET.txt  提出ファイルを連結したもの。 不正解の学生に対しては,次のファイルを生成する。. (d) $TARGET.err  エラー内容,テストケースの実行 結果,ソースプログラムを連結したもの。. fpattern.sh などのパターンを調べるマクロスクリプ トは,次のパターン式を指定できる。pattern には正規 表現を指定できるため,ヒューリスティックを容易に 記述できる。. • INCLUDE pattern 回数 [MORE|EQUAL|LESS]   pattern の出現回数を調べる。 • AND pattern1 pattern2   pattern1 と pattern2 を含む行があるかを調べる。 • OR pattern1 pattern2 ...  いずれかのパターンを含む行があるかを調べる。 • NOT pattern   pattern を含む行がないことを調べる。. 採点の結果として,○(アルゴリズムが正しい), △(アルゴリズムに問題がある),×(コンパイルエ ラー,実行エラー,課題を満足していない),★(ファ イルが存在しない)の 4 レベルの評価を付けている。. 6 採点スクリプトの作成法 本システムを用いた課題の採点は次の手順となる。. (1) 問題と解答例のプログラムから仮の採点スクリプ トを作成し,採点処理を実行する。 (2) 「クラスごとの採点結果」を調べ,ヒューリス ティックを収集する。ヒューリスティックを追加・ 削除して何回か採点処理を実行する。正しいプ ログラムが不正解とならず,不正解なプログラム が正解とならないような採点スクリプトを作成 する。 (3) 重要な課題やバグの多い課題は, 「クラスごとの採 点結果」を教員が調べ,提出プログラムを詳細に 採点し,問題点をコメントする。. たとえば,前述の課題の採点スクリプト workc0.sh は次のように書ける。 #!/bin/csh -f setenv OPTIONS ’33 88 11’ limit cputime 1 pushd $TMP/ > /dev/null ./$TARGET.exe $OPTIONS |& $FNORMALIZE > $TMP/$TARGET.out unlimit cputime popd > /dev/null. 7 おわりに マクロスクリプトと正規表現を用いて記述したヒ. ## 最大値の出力を確認する。 ./fpatternInOutput.sh -e "x" AND "最大" "88" if ( $status != 0 ) then exit 1 endif ## 連結リストの表示の行数を確認する。 ./fpatternInOutput.sh -e "×" INCLUDE "LIST" 6 if ( $status != 0 ) then exit 1 endif exit 0. ューリスティックを用いることで採点を効率的に行え, 採点の確度は 9 割ほどである。ただ,冗長なプログラ ムやアルゴリズムの悪さを指摘することはできない。 本システムは学生の進捗状況の把握や課題の採点を 目的としているが,学生がプログラムの問題点を確認 するために使用できるように改良する予定である。 参考文献. 5 採点の処理フロー 提出プログラム $TARGET.c の採点処理は次の順番 で行う。いずれかのフェーズでエラーを検出したとき は,エラーメッセージをログに書き込み,採点処理を. [1] Zin, A. M. and E. Foxley, ”Automatic Program Quality Assessment System”, Proceedings of the IFIP Conference on Software Quality, 1991.. 中止する。. 4−346.

(3)

参照

関連したドキュメント

This paper introduces an on-line cooperative planning and design system and studies its educational application as an exercise tool for practicing public

21 これ以後は、PIAC(1967 第 13 会大会)[1]の勧告値を採用し山地・平地部 150ppm、市街地 100ppm を採用し、都市内では重交通を理由として 50ppm

[r]

VDE-REG 8789 EVC 07BZ5-F 3x2,5+1x0,5 450/750 V EN 50620 EVC1234 (manufacturing order no.). LEONI

需要動向に対応して,長期にわたる効率的な安定供給を確保するため, 500kV 基 幹系統を拠点とし,地域的な需要動向,既設系統の状況などを勘案のうえ,需要

Conservation of water quality of rivers in Japan is an important national measure to support the life of the people and industry. However, concerns about ensuring the water

[r]

Work Values, Occupational Engagement, and Professional Quality of Life in Counselors- in Training: Assessment in Constructivist- Based Career Counseling Course.. Development of