sh
やmake
が使えるUnix環境.- WSL2上のUbuntu {20,22}.04 (LTS)で動作確認済み.
- Python環境:
- このレポジトリをcloneする.
- submoduleの
plags_scripts
レポジトリの中身を取ってくる.
git submodule update --init
以降では,このレポジトリのトップレベルディレクトリが,カレントディレクトリであると仮定する.
masters
に問題文のみを記述したipynbファイル(master)を置く.- 以降ではmasterを
${exercise_key}.ipynb
とし,課題名を${exercise_key}
とする. ${exercise_key}
は正規表現[a-zA-Z0-9_-]{1,64}
にマッチする文字列であるとする.
- 以降ではmasterを
make
を実行.masters/${exercise_key}.py
が無ければ作られる.- 解答セルに最初から入っている(prefill)コード.
- 自動評価のテストモジュール用ディレクトリ
tests/${exercise_key}
が無ければ作られる.
- Prefillコード
masters/${exercise_key}.py
を編集(必要に応じて). - テストモジュールを設置.
tests/${exercise_key}
に設置するPythonモジュールの名前は自由.- 複数設置すると,モジュール名の順にステージ化して実行される.
make
を実行.- 受講生に配布するform
forms/${exercise_key}.ipynb
が作られる. - PLAGS UTにアップロード可能な
conf.zip
が作られる.
- 受講生に配布するform
ビルドの試行には plags_scripts/exercises
を使うと手際が良い.
cp plags_scripts/exercises/as-is/ex2.ipynb masters/
make
cp plags_scripts/exercises/as-is/test_ex2.py tests/ex2/
make
make test
を実行.answers/${exercise_key}.py
が無ければ作られる.
- 解答例
answers/${exercise_key}.py
を編集. make test
を実行.- 解答例のテスト結果をまとめた
results/${exercise_key}.ipynb
が作られる.
- 解答例のテスト結果をまとめた
answers
には模範解答を置き,誤答例を別ディレクトリ(例えば wrong_answers
)に置くと便利である.
このとき,誤答例をテストするときには make ANSWER_DIR=wrong_answers test
を実行すればよい.
forms
の中身を適当なGoogle Drive上にアップロードし,学生に閲覧権限を与える.drive.json
を更新- 課題名をキー,formのDrive ID/URLを値とした辞書.
- 例:
{"${exericse_key}": "${DriveID}"}
${DriveID}
の代わりにhttps://colab.research.google.com/drive/${DriveID}
やhttps://drive.google.com/file/d/${DriveID}/
でも良い.
make
を実行- これで作られた
conf.zip
をアップロードすると,drive.json
にしたがって課題一覧表にColabリンクが生じる.
- これで作られた
drive.json
に Drive ID/URL を記述しておく方が扱いやすい.
conf.zip
はColabリンクをアップロードするだけで,formの実体はアップロードしない.formを更新した際は,Drive上のformを別途更新する必要がある.ただし,Drive上のファイルを上書き更新しても,Drive IDは不変なので,drive.json
は更新する必要はない.
judge_env.json
: 自動評価のサーバ側の設定が記述されている管理者指定のファイル.変更禁止.