1週間前からcourseraでアルゴリズムの講義をとっている。 ちょうど1年前にパート1の講義を受けたもののパート2である。 パート1はスタック、キュー、ソート、バイナリツリーやハッシュテーブルなど、ベーシックなもので、パート2はグラフ理論、文字列処理などである。 元々はアルゴリズム系に苦手意識があって、それを克服するためというネガティブな動機であったが、去年受けてみて、これは今の自分にぴったりの教材だと感じていた。 パート2を受けている途中だが、その思いは変わらない。何度も自学自習に失敗している身としては、なぜこの講義が効果的なのか理由を考えて、今後に生かしていきたい。
-
講義資料の形式 講義資料が動画とスライドで上がっているので、本を読むだけの場合と違い、理解しやすく、やる気も出やすい。 映画からの引用とか、少しギャグっぽいネタを仕込んでくれているので、モチベーションかなり上がる。こういうのは本やスライドだけでは、得られない効果だろう。
-
課題の分量 課題は、講義中のミニクイズ、Exercizeと呼ばれる。 10点満点選択式の問題、オンラインで自動採点されるProgramming Assignmentである。 Exerciseは30分程度で終わる比較的軽いものだが、講義をなんとなく消化しているとまあ解けない。 10回提出ことができるので、できが悪いと復習して再チャレンジできる。この再チャレンジできるというのは、結構ゲームっぽくてモチベーションが維持される。 たいていの場合は講義の内容を全ては覚えていないので、半強制的に復習することになるのも良い。
-
難易度 プログラミングの問題は今の自分にとっては本当にちょうど良い。絶対解けないほど難しくなく、ヒントをみればギリギリ解けるレベル。 実力より少し難しいものが解けたときは嬉しいし頭を使うので、非常に充実感がある。
-
英語の勉強になる 今英語の勉強しようと思っている人には一石二鳥。字幕をOn・Offできるので、そこまできつくない。何より英会話では学べない専門用語の語彙や言い回しが学べるのは非常に良い。
適度なタイミングで復習やテストがあるというのは、やりっぱなしにならないから良いのだろう。 べた褒めしたものの、去年受けた内容は半分ぐらいしか覚えてない。 忘れたぐらいに復習するのが一番良いというのは聞いたことがあるので、パート2が終わったらまずはパート1を復習を再開したい。 JavaScriptでのビジュアライズを引き続きやりたいのと、 これまた少しずつ進めているJavaScript動的解析器を使って、計算量の計測とかもやってみたい。 C言語上にコレクションライブラリを作ったりしても良いな。