フィルタリング

Schemeという名前のJava VMを作ろうと思った。

本質病

本質というのは、大学の建物と建物の間に生えている雑草で、大学の構内(環境)には存在するが大学の建物の中には無い。
料理で雑草をそのまま出せないのと同じで、授業によって学生に与えられる物は調理済みのものなので、どうやっても(教えている当人は)本質を与えている気になることはできない。

1年生に何を教えるか

『コンピュータに優しい人間』を作るために、半期13回程度の授業では少なすぎる気がする。
少なくとも本人に問題意識が必要で、大人数の講義ではそれを共有する必要もあるから、例えば統計とか他の何かを知らなければコンピュータに解かせる問題が無い。
広辞苑で最長しりとりを検索する方法*1 のような現実的課題に取り組むことが個人的には良いと思っていて、データ構造やアルゴリズムの工夫といった着眼点を伝える必要があると考えている。
「プログラミングできるチーム」と「プログラミングできないチーム」に分けて、プログラミングできないチームに方法論を考えさせてプログラミングできるチームにプログラミングをさせる という形式を以前考えたけど、平等でないので評価しづらいと指摘された。
TAにやらせれば良いと一瞬思ったけど、そういう面倒なTAはゴメンだな。。
電通大をサンプルとして考えると、学科に(少なくとも僕以上に)プログラミングの出来る人*2が5、6人は居たので、大学のレベルと規模によっては十分に成立する気がする。
難しいのは、グループに分割するとその教育効果にも大抵序列がついてしまうこと。つまり、2人くらいが大活躍して残りには教育効果がない。伝統的にはプレゼンテーションを入れるとかが対策として打たれている*3が。。

*1:http://www.ci.i.u-tokyo.ac.jp/~sasada/ptt/arc/302/302.html

*2:これも定義が難しいが、こういう課題を設定したときにプログラミングできるチームに配属させられるレベルをもった状態で大学に入ってきた人

*3:小学校の生活科からの伝統。生活科の重要な目標はプレゼンテーション能力の獲得である。 - http://www.mext.go.jp/b_menu/shuppan/sonota/990301b/990301h.htm 目標の(3)