UC Berkeleyに留学した話

音楽の授業

音楽の授業? は? タイトル詐欺かよと思った方、待ってください。 CS(コンピュータサイエンス)の授業の話はちゃんと次の章でまとめます。 実は日本で通う大学とバークレーとの交換留学の協定の関係から、文系科目を1つ取らなければなりませんでした。

僕は理系でプログラミングを勉強したくて留学に来ていたので、なんでやねんと思ったのですが、履修しなければ留学はできないとのことでした。 経済や経営など少し興味のある科目もあったのですが、あまり負担の大きな科目は取りたくなかったので、音楽学部のギターの授業を履修しました。

MUSIC46A Fundamentals of Guitar Performance

Fundamentals of guitar performance, including tuning, basic pitch and rhythm reading, melody and chord playing. MUSIC46A, UC Berkeley

ギター購入

実は自分、別にギター弾いたこと全っくありません。

ギター弾けるようになれたらかっけえなあ。そんな動機で履修しました。

当然、ギターの授業なのでギターが必要です。 日本で買って持っていくわけにも行かず、現地調達する必要がありました。

渡米2日目、ただでさえ生活に慣れないのに、日本でもあまり行ったことのないギター屋に行ってギターを買いに行きます。

ギターなんてなかなか買わないんで、日本で買うのでさえ緊張するのに、アメリカのギター屋でギター買うなんてかなりハードル高い……

店員さん(ドレッドヘア):Yo!兄ちゃん!どんなギター探してるんだいっ?!

僕:あ、あ、あのギター初めてなんすけど…

いかつめの店員さん、見た目は怖かったですが、話してみるととても優しくて、これから始まる留学生活への不安などいろいろな話をさせていただきました。

そしてついにギターゲット。 1学期間の留学が終わると日本に帰らなければならないという話をすると、帰国する時に買い取ってもらえることにもなりました。

CSの授業

Berkeleyの名物授業”CS61A”という授業を履修して、今回の留学ではこの科目にほとんど全力投球しました。

CS61A The Structure and Interpretation of Computer Programs

An introduction to programming and computer science focused on abstraction techniques as means to manage program complexity. The course exposes students to programming paradigms, including functional, object-oriented, and declarative approaches. It includes an introduction to asymptotic analysis of algorithms. There are several significant programming projects. CS61A, UCBerkeley

簡単に説明するとコンピュータサイエンスの基礎の授業でプログラミング言語はPythonを使いプログラミングの初歩的な文法からアルゴリズムの話まで扱いました。

次に、この科目の実際の1週間の時間割。

これで1科目なのでかなりボリュームはあります。

毎日課題もでるので平日の夜は課題で埋まります。

ちなみに僕の場合は特殊な授業の取り方をしていたので火曜、木曜に詰まってますが、周りの学生は月火水木綺麗に分散していました。

3種類の授業スタイル

アメリカの大学の授業は同じ科目で1週間に何コマも授業があります。

  • 日本の大学 : 多くの科目を履修して各科目は大抵週に1コマのみ。(実験や実習科目を除く) 「広く浅く」といったイメージ。
  • アメリカの大学 : 数少ない科目を履修し週に何度も同じ科目の授業、課題があり徹底的に深く学ぶ。「狭く深く」といったイメージ。

そしてCS61Aは3種類の授業スタイルがありました。LEC, LAB, DISです。

  • LEC(Lecture) LECはレクチャーの略で講義のことです。

日本の大学はだいたいこのスタイルのみですね。

教授が学生に向かって一方的に話続ける、ごく一般的な普通の授業です。

  • LAB(Laboratory) LABはラボラトリーの略で実習型の授業のことです。

やはりプログラミングの授業となると実際に自分の手でコーディングしないと力はつかないのでこういった時間が用意されているのだと思います。

自分の履修していた授業に関しては、あらかじめ与えられている課題をパートナーと相談しながらひたすら取り組むというものでした。

UC BerkeleyのTAさんがこの授業の先生で、わからないことがあれば何でも教えてくれます。

  • DIS(Discussion) DISはディスカッションの略です。

この授業は15人程度の少人数クラスに振り分けられ、LECで進められている講義内容を復習する補修クラスのような役割を果たしていました。

少人数なので先生と生徒の距離は近く、コミュニケーション主体の授業です。この授業の先生も大学のTAさんでした。

全てがまとめられた授業サイト

この授業は指定された教科書は特になく全てこの以下のサイトにまとまっていました。 当時実際に僕が受けていた2017年Summer Sessionのものです。 CS61A Summer 2017

  • Lecture : 授業で使うパワーポイント(“Video”のリンクがあれば録画された授業を見れます。)
  • Reading : 教科書に値する読み物。該当範囲の説明がされている。
  • Handout : LABやDISの授業で演習する課題のリンクが記載されている。
  • Homework : 宿題。
  • Project : 宿題の規模が大きいもの。与えられた条件に従ってアプリケーションやゲームをプログラミングするものがあった。

授業を履修して

CS61AはUC Berkeleyでもかなり有名で人気な科目のようでした。

Computer Scienceの基本的な科目ではありますが、hardな科目としてBerkeleyでは有名でした。

そして人気のあまり数千の学生が履修することもあるんだとか。僕のいた2017Summerでは400名ほどの学生が履修していました。

そのうち日本人は5名ほどで、僕と比べると優秀な方々ばかりでした。

当時、僕は機械系の学科で学部2年生。プログラミング経験は、大学で習ったC言語の基礎と少しだけかじったことのあるRuby on Rails。

正直、難しくて毎日が苦しかったです。

わからない内容をわからない言語で習う。そりゃあもうわかりません。

って話なのですが、現地の大学は多くのオフィスアワーと呼ばれる質問を受け付けてくれる時間があり補修はとても充実していたので、フル活用しました。

1対1の質問時間で、僕の英語力の低さから英文を書きながら筆談で説明してくれるTAさんがいれば、僕の出川イングリッシュを何度も何度も聞き取ろうとしてくれるTAさんもいました。ホントにありがたい。

自分の限界まで追い詰められるような経験でしたが、この名門大学でプログラミングを学べた経験は人生を変えるほど価値あるもので刺激的な毎日でした。

MLエンジニア。教育系のサービスを作っています。