Coursera で Scala を勉強した

9月から CourseraFunctional Programming Principles in Scala を履修していた。もうすべての講義と宿題は終わったので、すこし紹介と振り返りをしてみようと思う。

Coursera というのは Web 上で様々な科目の講義がうけられるサイトで、コンピュータや数学関係に限らず、Modern & Contemporary American Poetry から Introduction to Genetics and Evolution まで、幅広い科目が用意されている。すこし変わったものだと、来年の春には Barklee College of Music の Introduction to Improvisation なんてものまではじまるという。

ヘルプ にもある通り、すべての講義は英語で行われている。ただ、動画には基本的に 字幕が出せる し、講義をうけて終わりではなくて、理解度を測る仕組みもいろいろ用意されている。なので、英語が苦手でも比較的なんとかなると思う。

なお、字幕の翻訳 も行われているので、徐々に日本語で受けられる科目もできてくる、かもしれない。

Functional Programming Principles in Scala の場合

ここからは私が履修したクラスの話をする。コンピュータ関係なら、他の科目もそこまでは変わらないと思うけど、一つしか履修していない点には注意してほしい。

Functional Programming Principles in Scala は「Scala というプログラミング言語を通して Functional Programming を学ぶ」というもので、Scala のデザイナである Martin Odersky 自身が教鞭をとる。講義は、ほぼ毎週あたらしく動画と宿題が公開されるので、動画をみて宿題をといてそれを送信する、という形をとっていた。

動画は Coursera むけにきちんと作られていて「大教室の後ろからカメラでとっていて黒板の文字が見えない」なんてことは全く無い。動画には時折クイズがはさまれ、立ち止まって考えることで理解度を自分で測ることができる。クイズには選択式で問題を答えるものも「こんな関数を実装しなさい」といわれて、とくに回答はチェックされずに進むというものもあった。

宿題は、動画で学んだことを活かして未完成のプログラムを完成させる、というものだった。未完成といっても枠組みはある程度できているし、自動テストもすこしはある。手元でそれを完成させて Simple Build Tool からサーバーに送信すると、サーバー側でさらに広い範囲のテストと、スタイルのチェックが走り、数分後には結果が Coursera のサイト上から確認できるようになる。宿題には二段階の締切があり、Due Date を超えるとその分だけ点数から引かれ、Hard Deadline を超えるとその宿題は「落とした」ことになる。私の場合、一応全部の宿題で満点はとったのだけど、うち二回は Due Date をすぎてしまったので、本当の満点はとれなかった。

また、学生同士の交流の場として、Discussion Forums も用意されていた。私は、宿題でつまってかつ締切の近いときにヒントを探しにいくくらいにしか使えなかったけど、はやめに宿題をすませて人の質問に答えてみるとか、Scala 一般に関する議論をながめるとか、Odersky 教授に感謝するスレ に参加するとか、もうちょっと他の人々と交流しても良かったように思う。

最後に

Coursera はすでに十分「使える」サイトだ。教育の未来がどうとか教育系スタートアップがどうとか、そういう話は起業家の人達にでも任せておいて、まずはなにか講義をうけてみてもいいんじゃないかと思う。

私は、Algorithms: Design and Analysis, Part 2 にむけて (12月からのはやらないけど次回もあることを期待して)、次は Algorithms: Design and Analysis, Part 1 をとるつもりです。