(プログラミング1) 残り6週で何をやるか

Share on:

6週のうち1回は90分丸々演習(ペアプロ)の予定なので、実質的には新しい話をできるのは5週分だけらしい。

授業の達成目標を眺めると、、、

  • 目標1番目は、ペアプロ+レポートで対応中。
  • 目標2番目は、File I/Oを除いてレポート3で終える予定。File I/Oの方はこれから演習かレポートに盛り込む必要あり。
  • 目標3番目は、クラスを除外する形になりそうな予感。モジュールと関数自体はこれまでにもやってて、同じくレポート3で一段落予定。ファイル名とモジュール名を区別できてない学生まだ多いけど。
  • 目標4番目は、ミニテスト+ペアプロ+レポート諸々で対応中。
  • 目標5番目はレポート2で一度はやってみたのと、先日のPyCharm+デバッガで抑えてみているつもりです。ちょっと足りないとは思うので、今後のレポート課題に組み込みたいけどどうしよっかなー。
  • 目標6番目は、部品提供+αに留まってるレベル。現状最も足りてない部分
  • 目標7番目は、変数名や関数名等の命名規則は当初から何度か盛り込んでるし、ドキュメンテーションとユニットテストはレポート2で対応済み。

という状況で、予定していた達成目標からは6番目が一番足りてないかな。


後半戦が始まってるということで、残りの週(6回+期末テストの週)でやりたいことを列挙&優先順位を付けてみるとこんな感じかしら。

  1. データ構造: list, dict, setの利用
  2. 関数設計の考え方(話すだけ?デモ?演習?それ以外?)。前述の達成目標6番目。
  3. バージョン管理: gitかなぁ(悩)
  4. numpy
  5. matplotlib
  6. wxPythonか何かGUIツールキット
  7. その他有用なモジュール: math, pandasとか
  8. エラーと例外、アサーション
  9. 余裕があれば: クラス導入
  10. 余裕があれば: C言語イントロ。

1番目の「データ構造(list, dict, set)」で2週かかりそう。使えるように、というよりは「こういう構造がある(教科書とにらめっこしながら読み書きできる)」で十分なので、サラッと流すだけで良いかもしれないけど。レポート3の先生役する時間も必要なので、恐らく10回目(6/30)と11回目(7/4)はこれかな。この2週は演習時間取れるか怪しいので、12回目(7/7)は丸々演習の日にする予定。この予定で進めると、ここまでで残り3週に。(この間に File I/O and/or データ構造なレポート課題4出したいかも)

2番目の「関数設計の考え方」は、paizaのスキルチェックAtCoderみたいな課題(最初の入力と、最後の出力だけを指定した課題)が出された時に「どんな関数を作るか」というお話。関数1つじゃ済まない(済ませたくない)ぐらいの問題を用意して、関数入出力設計*2,3個してその組み合わせで問題解決するという、設計自体に焦点を当てたい。これで少なくとも1週は潰れる予定で、この順で進めるなら13回目(7/14)が終わり。ここまでで残り2週に。

3番目以降は仮に順番付けてみたけどどれも同じぐらいの優先順位かな。この時期には線形代数の基本が終わりかけらしい。ベクトル・行列演算ということでNumpyをどこかで触らせてあげたい。軽くコード例示したりデモやるぐらいなら、授業1回分も使わないけど、どこまでやるか次第だな。Matplotlibと合わせて入門編1回ぐらいか? その予定なら、14回目(7/21)が終了。(ここで最後のレポート5回目?)

15回目(7/28)にバージョン管理かしら。後期に回すという手もあるけど、一度話をしておいた方が良い気もするし。

16回目(8/4)はテスト期間。プログラミング1ではテスト無しなので、レポート等相談対応の時間に使うつもり。

んー、こうしてみるとペアプロに使える時間が足りてないかも。ソフトウェア演習1の山田先生と相談してみよう。

1年次のうちにC言語も少し触る予定だったけど、前期の最後にちょろっとやって後期に忘れてしまうぐらいなら、後期で触ったほうが良いか。