オンライン学習2013 Q2
当初の予定とはちょっと変えて、Coursera から 3 つのコースを受講して、無事終了しました。2 つは Statement of Accomplishment がついててとてもうれしいです(まだ 1 個は出てないけど)。
-
Algorithms, Part II | Coursera
- Kevin Wayne and Robert Sedgewick, Princeton University
-
The Hardware/Software Interface | Coursera
- Gaetano Borriello and Luis Ceze, University of Washington
-
- Andrew Ng, Stanford University
所感
Algorithms は前期から引き続き。ちょっとアドバンスドな内容で、グラフ理論とか P=NP?とかでしたが、相変わらずとても分かりやすいレクチャー付きなので宿題の Java も頑張れました。2009 年くらいに発表された論文と同じことを宿題でやらせるとかなかなかワクワクな内容でした。どの宿題も実践的な例だったのでとても楽しく受講できました。英語はゆっくりすぎたので 1.5 倍速で聞いてました。
Hardware/Software Interface はめちゃくちゃおもしろくてためになりました。これは超オススメ。University of Washington 行きたいと思ってしまった。何をやったかというと、基本はレクチャー聞いて宿題提出するんですが、宿題がめちゃくちゃおもしろかった。ビット演算のみで if やったりとか、ソースの無いバイナリを gdb とか objdump で分析して秘密の鍵を探したりとか、バッファオーバーフローを実際に行ったりとか、最後はメモリアロケータを実装(と言ってもほとんどできてるものの穴埋めだけど)したりとか、とにかく楽しかった。gdb とかアセンブリとかさっぱり知らなかった自分ですが、とりあえず渡されたバイナリを見る方法を知れて本当にためになりました。レクチャーも素晴らしくわかりやすくて、今までバイナリなんて触ったこと無い、怖い怖いって言ってる人には本当にオススメ。大満足。
Machine Learning は錆びついたマシンガンを、ということで有名な Andrew Ng 先生の授業を取ってみました。Coursera の Founder でもある氏のレクチャーもこれまた分かりやすく、単純な線形回帰からロジスティクス回帰やニューラルネット、SVM や PCA など一通り勉強できました。特定のアルゴリズムだけでなく、機械学習全般において、どういうところに目をつけてどうやって精度を上げていくのか、についての話題などもありとても良かったです。数式は出てきますが、細かい証明とか式変形はすっ飛ばすので、不満な人は不満かも。僕はもうすっかり数式なんか忘れてしまったので結果だけでお腹いっぱいでした。宿題は Octave のコードの穴埋めが毎週ありました。そこまで難問はありませんでしたが、自分はなるべくループを使わずに行列計算で記述するように努力したので結構ハマりました。。。
反省
これ以外にも 2,3 個手を出してみたのですが、さすがに時間が足りず完走できたのはこれだけでした。前期は 1 つだけでしたが、今期は 3 つもやれたのでそれでも進歩しましたが、もっと見識を広げたいところ。CS 以外の特に人文系をやってみたいんですが、読む量とかがハンパなくてなかなか取り組めません。。。
今後
Q3 はちょっと落ち着けて、以下の 1 つだけにしようとおもいます。もし余裕がありそうなら、途中で止まってる iOS の講義を再開しておきたいところだが。。。
-
Startup Engineering | Coursera
- Balaji S. Srinivasan and Vijay S. Pande, Stanford University
その次の期に始まるコースでも物色しておいて、Q4 はガッツリいこうかなぁ。