Yet Another 白熱授業

みなさま、明けましておめでとうございます!

blog の更新が滞ってしまっていて大変申し訳ないのですが、今はちょうど node.js の本を執筆しているところでなかなか node ネタを書けないというかここでネタ書くヒマがあったら本を書けという心の縛りがありまして・・・。


でも新年明けましてということで今日は書いちゃうのだ。

さて、もう半年以上 CS のカリキュラム紹介をしていなかったんだけど、今日は Harvard 大学の CS50 という授業を紹介。折しも元日ということで学びに関連する記事をあげるのにはいい日だと思って。というか今日明日の夜はサンデル教授の白熱教室、再放送もやってることだし!

さて、CS50 はいわゆる CS の入門コース。
どこが白熱なのかというと、まず、やっぱり先生がイイんだよね。彼の名は David J. Malan。彼は Harvard での BA -> CS 専攻型の経歴を持ってて 1996 年にはかの Brian Kernighan に CS50 を教わっている(なんという贅沢!)。で、なおかつイケメン(って言ってもいいよね?)。彼の持ち味はまずはそのマシンガントークだ。勢いに乗ってガンガン飛ばして聴衆を圧倒しちゃうから聞いているほうは退屈って言葉を思いつく暇さえないくらいだ。このCS50 で扱われているのは初級のアルゴリズムC言語。ま、どこの大学でもあるようなカリキュラムの一つだよね。

さて、ではほかの学校で行われる授業とどこが違うのだろうか?

例えば Youtube。この授業の中で彼はよく Youtube の動画を紹介するんだけど、これがもうね、うまいこと見つけてくるんだよね!例えばソートの授業での1コマでは Google の面接をオバマ大統領(このときは上院議員だったのかな)が受ける動画が紹介されていて、その中で Googleの中の人が「100万ある 32bit int をソートするのにもっとも効率のいい方法は?」なんて門外漢のオバマ氏にビシッと聞いちゃってる動画。
それにどう答えるかは
http://www.youtube.com/watch?v=HAY4TKIvSZE
こちらを参照のこと。

ほかにも電話帳を二つに引き裂く動画(バイナリサーチの授業、これはジョークだけど)や
http://www.youtube.com/watch?v=P4fcOLN9heU

ポインタの解説ではスタンフォードの学生(?)が作ったと思しきクレイアニメも紹介しちゃう。
http://cslibrary.stanford.edu/104/

こんな突飛な動画を見つけてきて紹介しては学生の関心をぐっと惹き付けながら授業を進めていくんだ。教科書をただ読んでいてもやっぱりつまらないからさ、Youtube にアップされた動画を使ってサブジェクトを常に身近なものとして捉えてもらい、集中力のレベルを引き上げ、そして記憶として授業の時間内に固定させる効果もあるんじゃないかと思う。僕は心理学者でもなんでもないからこんなことを言うのは憚られるんだけれども。

セメスターが終わりに近づくと最終提出プロジェクトの仕上げをするのにオールナイトHackasonも行われる。豪華なことにその日はピザや中華料理が振る舞われる上、朝まで残った人には朝食付きだ!こんなことが授業の一環として企画されちゃうなんてすごいよね。

そんなこんなでプロジェクトを仕上げた後にはお祭り(CS50 Fair)だ。家族や友達も連れておいでよってさ!
http://photos.cs50.net/Events/CS50-Fair-2010/

さらに CS50 のサイトには通販サイトまであって、そこではなんと「CS50グッズ」が販売されているんだ。CS50のロゴが入ったTシャツやスウェットのほかにクマのぬいぐるみまで!w 日本だと「計算機科学1」とかっていうロゴの入ったTシャツが売られちゃう感じ?

ということで、Harvard の CS 入門のちょっと変わっていたり楽しそうなことを列挙してみたけど、その中身は濃く、プログラムを組んだことのない人が1セメスターが終わってできるようになっていることはかなりハイレベルなんじゃないかな。(僕はCSの授業を受けたことがないのでこの程度はフツーだったらごめんなさい、でももし僕が全くプログラミングを知らない状態から12週でこのレベルをこなせるようになってるって考えたらすごいと思うんだ。はや7週目で Valgrind 触るとか!)
授業で扱われているスライド等々はすべてWeb上からダウンロード可能な上、授業のビデオ自体も全部見れちゃうので、文系卒できちんとした CS の授業を取ったことのないプログラマや中高生には是非オススメしたい教材。しかも2010年度のビデオからは transcript が完備されているので英語のリスニングは苦手だけどリーディングならという人でも全然大丈夫だからね。そのうち transcript 読むのがかったるくなってリスニング力があがるなんていうプログラマ的怠惰による英語力の進化も期待できたりして。

すべては
http://www.cs50.net
もしくは
http://www.cs50.tv
を参照のこと。

と、紹介はここまで。ここからはその授業の成り立ちの話ね。

さて、以前は Sever Hallの 200 人弱しか入れなかった教室で細々とやっていたこの授業はその人気の上昇に伴い 2008 年度からは Sanders Theatre という 1166 名まで入れる教室(というかコンサートでも使われるようなホール)で行われるようになった。件のサンデル教授の授業もこの Sanders Theatre だね。この通り、CS50 は昔から大人気な授業じゃなくって、2002 年には授業を取っている生徒数がわずか 100 人(!)を切る程度にまで落ち込んでしまっていたんだ。でもそれを David J. Malan は見事なまでに立て直した。この辺の経緯については彼自身が「Reinventing CS50」というタイトルで論文にしているので授業改革に携わる教員の方には是非参照してほしい。
http://www.cs.harvard.edu/malan/publications/fp310-malan.pdf
ん、いやむしろすべての人に参照してほしいところ。なぜならこの資料の中に綴られていることは教育界のみならず多くの領域に通じるはずだからね。

せっかくなのでこの論文を独りよがりにちょっぴり説明してみよう。この授業の再開発の主眼は

「学生をふるいにかけるのではなく、CSという分野に目を開かせる」こと。

そのために様々な努力が行われるんだけど、教える側ができるのは学生たちを後押しすることだけ。うん、そっちの側からできることってそれだけなんだよ!授業以外に平均すると15時間の workload が必要で、それだけでもキッツい授業なんだけど、それを教える側が惜しみないリソースを提供することで後押しするんだ。教材を全部自宅から参照可能にしたり、知ってて当たり前の、「ググれカス」とか言われかねないちょっと聞きにくいことなんかもあらためて質問できるように匿名で質問できる掲示板を用意したりね。
そう、学生にとっての親しみやすさを第一に考えるんだ。決してこれはカリキュラム内容を今までより易しくするとかそういうのじゃなくって、例えばコンピューターサイエンスのみならずギークカルチャーや internet meme を紹介したりという演出をしてみたり、Youtube の動画を紹介するのもこの怒濤の90分を学生に乗り切らせるためのちょっとした息抜き用にとして使ったりとかね。
このCS50の授業はほかの授業と比べたらそりゃもう最大の負荷を強いるんだけど、こういった取り組みの結果として Harvard では5番目(今年はもうちょっと上に行ってるかも)にデカい授業になることができたんだ。

と、こんな感じのことが書かれている。むしろこれは資料というより David J. Malan の冒険譚って印象だね。

最後に数字をあげておこう。2010度の CS50 の enrollment は前年比 56% 増の 525人になった。この 56% という数字がどれほどすごいかわかる?就職したらわかると思うけど、たいてい企業内での数字っていうと20%以内、つまり両手両足の指の数の和以上の数字っていうのはほとんど出てこないんだよ?しかもそれをダブルスコア以上だ!!
http://www.thecrimson.com/article/2010/9/13/students-class-cs50-more/
(もちろん facebook創立者たる Mark Zuckerberg の影響もあるんだろうけどね!)

こんな、愛さえ感じられる授業、一度は受けてみたいな。