Archive for the ‘日記’ Category

デザインスクール2016始動(運営側の議論が)

金曜日, 6月 17th, 2016

デザインスクールの2016年度実施に向けた議論が始まりました。現時点ではテーマ叩き台や実施日について意見を出し合ったりしてる段階で、まだ確定している部分は少ないです。特に実施日が例年だと「11月の3連休」でやってるのですが、今年は3連休じゃなくて。単純に短縮するか、何かしら工夫して時間確保するかであれこれ話し合ってます。

現時点での予定では、次の通りです。

  • 1日目: 2016/11/19(土) の午後開始。
  • 2日目: 2016/11/20(日) フルタイムでワーク・フィールドワーク。
  • 3日目: 2016/11/21(月) 平日の夜に発表会

1日目の午前からやれないかも検討中。最短時で、上記の実質約2日間というスケジュールになりそうです。

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

金曜日, 6月 17th, 2016

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言語も少し触る予定だったけど、前期の最後にちょろっとやって後期に忘れてしまうぐらいなら、後期で触ったほうが良いか。

(プログラミング1) PyCharm入門+デバッガ体験

木曜日, 6月 16th, 2016

9回目の授業が終わりました。今週は統合開発環境PyCharm入門しつつ、デバッガ体験させるという1日。予想以上に時間がかかって演習やる時間は取れず。だけどIDEの良さは伝わったと期待したい。「ブレークポイントって何?」とか初めての用語はまだしっくりこないかもだけど、エディタとしての機能だけでも良いし、printデバッグ以外にこんな方法があるんだと思えるだけでも良いです。発展的な話としてやってみた「条件付きブレークポイント」の便利さに気づけてたら、十分凄い。

来週は慰霊の日で休講(大学設定)ということで、次回は2週間後。レポート課題は確実に抑えて欲しいif文、for文、while文、関数を「先生役として相手に教えるための資料を作れ」という復習丸出しな課題に。教科書読み+授業解説+演習で理解できないなら、自分で教えるつもりで準備(勉強)しろ、と。

(プログラミング1) レポート2の採点

火曜日, 6月 14th, 2016

1年次のレポートということもあって、レポートの書き方を含めた細かいフィードバックをしたいなと。でも教員で全部やるのは辛いなと。1度目のレポートはやったんですが、そのままだと辛いので誰か採点TAやりませんか。という話を大分前にやったのですが、それに対してやりたいという声が上がってくれて、先週締切のあったレポート2の採点からお願いできることになりました。

解答例と大まかな基準を用意してお願いした結果、TAスコアと教員スコアとでは平均点の違いを除くと傾向的にはほぼ同じ(相関係数0.98強)ということで、院生でもレポートの良し悪しは気づいてくれる訳で、安心しました。今回私の方はざっくりと眺めるだけにしたのですが、それでもおおよその結果は良いらしい。一方で見逃してた点に気づけたので、細かいところをTAにお願いするのは正しいらしい。

ということで、フィードバックを活かして下さい〜>受講生の皆さん

(まだフィードバック公開はしてないけど)

(プログラミング1) レポートに書けても理解できてるとは限らない

木曜日, 6月 9th, 2016

8回目は、やり忘れてたFile I/Oに、新しいデータ型 Tuples、そしてツール紹介として Jupyter Notebook を触ってみました。

今日が締切のレポート2は、未提出が1割強。難しいとは思うのだけど、教科書や授業でやった内容ではあるのだよな。そういう意味では「(a)問題の意図を理解していないか、(b)取り組み方が想像できない」のどちらかで詰まってるようです。

(a)は私の問題(設問文の質の問題)であるケースと、書いてるけど読み飛ばしてるケースに分かれてて、後者のケースも少なくなくて。最初は文章の問題が主要因かとも思ってたんですが、そうじゃなくて読んでなかったり、もしくは読んでるだけで咀嚼されてなかったりというケース。具体例を出すと、授業中に何度も「int型オブジェクト」という表現を多用していますが、個別に対応してるとこれが通じない学生がいたりするという。もう8週目なんだけど、まだ共通の辞書が作れてないらしい。いや、「オブジェクトって何?」とかいう話もありそうなんだけど、int や integer でも通じないので、テキスト・授業を理解できてないのだなぁと。身に染みます。

(b)は、この授業の中で達成させたい目標の一つ。「次の一歩が分かる」ように、問題分割して取り組む方法をデモしたり、過程を言葉や文章で表現させたり、リファレンス参照させたりといったことをさせてみてます。まだまだな学生が多いかもですが、一方で頑張ってる学生もいて。元から素養があった、という話だと悲しいですがw それだとしてもそういう思考方法を共有させるためにペアプロを標準導入してる訳で。

ということで、中間地点を過ぎましたが、前途多難だなーという話でした。

(プログラミング1) そろそろ中間地点に到達

木曜日, 6月 2nd, 2016

先週からやや高度な話が増えてきてるので、今週はコード例を交えつつ振り返り多めの内容でした。同じ内容繰り返しても面白くないし、聞く側もツマラナイよねということでユニットテストに絡めてリファクタリング・テスト駆動開発の話したり。再帰の例で木構造探索する迷路問題紹介してみたり。伝わったかどうかは怪しいですが、新しい話がない講義というのも学費泥棒だよねということで、それなりに準備してみました。

内容の入れ替えが多々あったものの、今のところペース的には予定通りです。予定通りに早すぎるので、来週は少しペースダウンというか演習メインの週になる予定です。課題なりペアプロなり、オフィスアワーなり活用して自分から学ぼう。自分から行動しない人は置いて行かれるだけです。それを少しでも防ぐ工夫としてのペアプロ導入ですが、話せない人が減ってきた感はあるかな。ついてこれてるかは別なんですがw

まだまだ「関数って何?」「変数って何?」とかいるし。

P.S.
学科パンフ掲載用の授業撮影があるらしい。実際には先週やる予定だったのが忘れられて、今週も忘れられて、と延び延びになってるんですが。といいつつ私自身も授業対応でアップアップしててその日のは忘れてるんですがw

Udacity: Deep Learning Lesson 2が終了

火曜日, 5月 31st, 2016

複雑研全体ゼミで進めてるDeep LearningのLesson 2が終了しました。

Lesson 1はイントロダクションですが、「機械学習って何?」から始まってロジスティック分類器、softmax、バイナリコーディング(one-hot encoding)、交差エントロピー、入力データの正規化、交差検定、過学習、データサイズ、パラメータチューニング、、、といった幅広い話題というか「データを用意して学習器を使って学習させて評価するところまで」一連で出てくるキーワードを各々数分動画で簡潔に話して進むという、恐ろしいまでのスピード感です。いや、各々の動画でわからない所は個別に学べばいいだけなんですが、そこまでやってない(やれてない)部分も多々あって。ということでゼミで紹介発表聞いては突っ込む日々です。

Lesson 2は深層学習の話に入るっぽいですが、その前段としてのNN話が半分、もう半分は正則化とDropout。メインといってもやっぱり「数分動画*数個」で話が終わるという。ま、そんなものかもしれない。ハイスピードでNNにおける重み、線形モデル、中間層、ReLU、チェインルール、バックプロパゲーションあたりの話がざっくりと終わりました。(ので突っ込みまくるわけですが)

分からないところはUdacity限定せずに勉強して欲しいし、聞いてる方も勉強するつもりで質問して欲しいのだけどなー。

P.S.
そろそろ例題プログラム動かすところもちらほら出てきてるのですが、環境構築で苦戦してるのか、動かないらしい。いや、ただ「動かない」と報告されても情報量ゼロなんですが。報告の体をなしてないぞと突っ込んで、来週もう一度やってもらうことに。頑張れ〜。

機械翻訳したのを読んでるから理解できない?(妄想)

金曜日, 5月 27th, 2016

裏付けゼロのお話。

演習中にあちこち作業覗いていると機械翻訳使ってる学生が目につきます。「defはdefineの略」とか「sepはseparateの略」とか、その辺りは英文解説読んでれば気づくはずですが、気付かずに最初から機械翻訳に頼って「??」な状況になってると人たちです。英語を読む気がゼロというだけでなく、誤訳で勉強しようとしてるために悪影響が出てそうな気がするというお話。

機械翻訳された日本語中心というかそちらだけで勉強しようとしてると「元々どう書かれてたか」には殆ど触れていない可能性が高くて。その結果「キーワードを日本語で解説しても英語で解説しても元々予習してきた中には出てこなくて、予習の意味がゼロに近い」のかな、とか。

教科書には英語で「user input」とあって、開設時には日本語で「ユーザ入力」とか説明してもそれが紐付いていない。ように見える学生がちらほらいて。用意したスライド等ではなるべく日英併記するようにしてるんですが、誤訳が中心になってるとどちらにも紐付かないのだよな。

本人は機械翻訳使うことで楽しようとしてるはずですが、それが却って時間係るどころか理解阻害の要因になってるように見えて。

一応授業では「英英辞書使おう」と伝えてるんですが。にゃー。

(プログラミング1) 今日から中盤入り

木曜日, 5月 26th, 2016

先週までで構造化プログラミングな話に区切りがついて、今日からはやや高度な話に。具体的にはスコープ、ドキュメンテーション(docstring)、ユニットテスト(doctest)といった話を具体例も交えつつ解説。スタックフレームって何とか目視テストじゃなくてテストを自動化しようとか。一度の話では理解できてない学生が過半数かもしれませんが、一応「事前に教科書読んでこい」なんだよな。予習で疑問に思ったところを授業中なり質問なりを活用して乗り越えて欲しいです。

進捗確認アンケートで「今日の授業は何やってるのかサッパリ」みたいな書き込み(1件)を貰ったのですが、それなら質問してくれ〜。書き込むだけだったり、書き込むにしても具体的な質問じゃないと対応できないです。という回答をして終了。うーん、演習中に手を上げてる人は結構いるのだけど、「質問する人が目立つだけで、全体としてはやっぱり質問しない人もいる」のね。

ただ、演習をペア・プログラミングで強制してる分、「隣の人に話しながら・質問しながら取り組む」というのをしてない人(ペア)は目立ちます。その分、そこに対してのフォローはしやすくなった。勿論「授業中は問題無さそうに見える」人もいて、そっちはレポートでの判断になるか。

去年の例だと6回目で制御文、9回目でスコープなので、やっぱり今年度はやや早めらしい。そのつもりで進めてますが、前述の通りそろそろついてこれてない学生が目立ち始めたかな?というところです。 ペアプログラミングのペアをそろそろ調整(理解度高い学生と低い学生とをペアにする)しよう。

ゲームの例が分かりやすいとは限らない

木曜日, 5月 19th, 2016

プログラミング1の5回目が終わりました。そろそろ半ばに差し掛かると考えると15コマの少なさを強く感じます。5回目の中身は「for文」を中心としつつ、派生話題としてシーケンス集合と浮動小数点取り扱いについてのお話。

毎週やってるミニテストの出来が芳しくなかった(正解率6割)こともあって解説時間が少し長くなりましたが、それでも演習時間を40分強確保できました。手を動かしながら考えないとね。

それにしても辛い。DQやFFをやったことがないはともかく、「グループ攻撃というのを聞いたこと無い人?」でも手を挙げる人がちらほら。そ、そうか。ゲームネタの方が分かりやすいと思って演習にちらほら盛り込んでたけど、そうでもないんだな。反省。(何で演習や課題でのネタ作り悩むな)

ゲームネタを避けて、for文の例としては「例えばこの講義の受講生全員に対して、個々人の点数に応じて何か処理したい場合、ひとりずつ繰り返して処理するよね」という話したり。whileでもforでもどちらでも書けるケースはあるけど、書きやすさという点で向き不向きがあるから特徴を抑えよう、と。

P.S.
授業開始前にレポート出せてない学生に声掛けしてみたところ、提出し忘れただけ1件、理由をうまく説明できないかもしれない人が2件、といった感じかしら。自分から動いて欲しいけど、切っ掛けとして一度呼び出してみるか。

レポート出せないこと自体はともかく、友人・先輩・TA・先生なりに質問できない、のだとするとそれは問題なわけで。そうだと決まったわけじゃないけど、授業前後だと時間撮れないからちゃんと話ししづらいので、一度時間取って話してみようかと。