ハーバード・コンピューターサイエンス学部のすごかった授業3選
「ハーバードの授業ってどんな感じだったの?」とよく聞かれます。
私が受けた授業は、専攻の「コンピューターサイエンス」、副専攻の「物理」、ただ好きで取っていた「フランス語」、各分野から1コマずつ取る必要がある「教養」の4つに大別され、それぞれ以下のコマ数を受講しました。
それぞれ面白い授業ばかりだったのですが、今回はコンピューターサイエンスに絞って、すごかった授業を3つご紹介します。
1. CS50 - コンピューターサイエンス入門I
この授業を受ければ、とりあえずプログラミングは一通りできるようになります。通常は1年生の前半で受講します。
早速例外で恐縮なのですが、私はこの授業を受講していません(プログラミング経験者だったので入門Iを飛ばして入門IIから受講しました)。ただ、取っていないにも関わらず深く印象に残っているくらい、この授業はキャンパスで大きな存在感がありました。
というのも、CS50はハーバードで最も受講生が多い授業なんです。2019年の受講者は735名とのことで、1学年1600名の半分近くがCS50を受講して卒業していることになります。
C、Python、Webフロントエンドをまんべんなく学べるカリキュラムが組まれています。その評価は高く、ハーバードのライバルとも言われるイェール大学でも、CS50の教材・講義がそのままコンピューターサイエンス入門の講義として採用されています。
私が印象に残っているのが、学期の最後に開催されるCS50フェアです。授業の一貫として自分で何かアプリかサービスを作って、最後にこのCS50フェアで見せ合うのですが、これがとにかく華やか。GAFAやユニコーンなどの採用担当者がブースを構えて、優秀な学生の青田刈りに訪れています。彼らが持ってくる大量のTシャツ、グッズ、お菓子、ポップコーン、風船などが飛び交っていて、毎年お祭り騒ぎでした。私はCS50を受講しませんでしたが、友達のプロジェクトを見に行ったり、各企業のグッズを集めにフェアには参戦していました。
(2019年CS50フェアの様子https://www.seas.harvard.edu/news/2019/12/practical-programs)
CS50はプログラミングを学ぶだけでなく、テック企業の華やかさや文化を学生が身をもって体感する場にもなっているように思います。
講義の録画や教材が、全てWebで無償で公開されています。興味のある方は是非チェックしてみてはいかがでしょう?
(CS50 2019年の初回講義)
2. CS124 - データ構造とアルゴリズム
この授業を受ければ、シリコンバレーのほとんどの会社のエンジニア面接を突破できます。私は2年生後半で受講し、受講の最中Google本社のインターンの選考を通りました。
毎週プログラミングの宿題が課されるのですが、このプログラムは正しく、そして速く動くことが求められます。プログラムを提出すると、そのプログラムの速さが自動で計測されます。そして、どの学生のプログラムが速いかが、常にランキング形式で公開されていました。競争心を煽る仕組みがなんだかアメリカ的だなあと今になって思います。
宿題は週初めの講義開始と同時に公開されます。ある週、私のルームメイトが講義そっちのけで宿題に取り組み、講義が終わるまでに提出してしまったことがありました。なので、講義の終わりに教授がランキングをチェックすると、なぜか一人すでに終えているわけです。こいつは授業聞いていなかったな、いやでもこんなに早く終わらせるのはすごい、でもこいつは授業聞いていなかったな、と非常に複雑な表情をしていたのが面白かったです(その後そのルームメイトはハーバードを3年で卒業し、スタートアップに行ってしまいました。また、次週から宿題公開のタイミングは講義終了後に改められました)。
ちなみに、若かりしザッカーバーグはこの授業について以下のように言っています:
“124 kind of changed the way I thought about stuff… like data structures and algorithms, and how the setup is really important. And that's definitely saved our ass in scaling a lot of times.”
“124 を取って自分の物の考え方が変わったと思う … データ構造やアルゴリズムについて、設計がいかに大事か。これには僕たち(Facebook)がスケールしていく中で何度も助けられたよ”
3. CS 161 - OS(オペレーティングシステム)
この授業を受ければ、シリコンバレーのほとんどの会社でエンジニアとして活躍できます。私は4年生後半に受講しました。
世の中WindowsやMacやLinuxなど色んなOSがありますが、これをほぼゼロから学生に作らせる授業です。ハーバードのコンピューターサイエンスで最もヘビーな授業と言われ、所用時間は週40時間にのぼります。通常一つの授業にかかる時間は10〜15時間程度、1学期に4つ履修するものだとお伝えすれば、一つの授業に週40時間かかることの異常さが伝わるでしょうか。
この授業では全学生がペアを組まされ、1学期中同じパートナーと課題に取り組みます。このパートナーとはめちゃくちゃ仲良くなるか、最終的に絶交するかのどちらかで、私は運良く前者でした。私の彼女(今の妻です)が、「Hiroはどこに行ったの?」とそのパートナーに聞くと「やつはさっき食堂に行って、30分後に帰ってくる」と、なぜか彼女よりもパートナーの方が私のスケジュールを把握していました。それだけ互いのスケジュールを合わせておかないと課題が終わらなかったわけです。
ちなみに、時には朝の2時まで共に課題にもがきながらも、この授業でA評価を勝ち取ったパートナーと私は戦友となり、同じ会社(Asana)に就職し、サンフランシスコに移った後もルームメイトとして一緒に暮らし、結婚式でもスピーチをしてもらいました。いい話です。
若かりしザッカーバーグは以下のように言っています:
“I just suggest that you take the hardest courses that you can, because you learn the most when you challenge yourself, right? So like 161 just ruined my life, and I learned so much from it.”
“自分が取れる一番難しい授業を取るのをおすすめするよ。だって、難しい挑戦をしている時こそ多くを学べるだろう?161で僕の生活はめちゃくちゃになったけれど、そこから本当に多くのことを学んだんだ。”
============
いかがでしょうか。今回はコンピューターサイエンスに絞って書きましたが、教養でとった授業など、皆様の声を聞きながら他の授業についても書いていければと思っています。何かリクエスト等あればhttps://twitter.com/hirohisa_yamada までお寄せください!
この記事が気に入ったらサポートをしてみませんか?