南カリフォルニア大学(USC)2018年春学期と夏学期の状況
5月16日、大学の春学期が終了した。
USC(University of Southern California) こと南カリフォルニア大学に入学してから、学位留学の半分近くを終えたことになる。
この機会に、最近の出来事や現況をここにお伝えしたい。
今年の夏になにをするか
2018年の夏(5月〜8月)はインターンシップと夏学期の授業を取ることにした。
すでに5月16日から Pinscreen社 にてインターンシップを始めている。 Pinscreen は USC の助教授の Hao Li が立ち上げたスタートアップで、スマートフォン向けのコンピュータグラフィックスが主なプロダクトだ。
また、インターンシップと同時に CSCI 567 Machine Learning の授業を取っている。ロサンゼルスの会社なので、ロサンゼルスにある大学に通うことが時間的に可能なのだ。といっても週に40時間働いて授業に出席して予習と復習をするのはかなり忙しい。
どうしてわざわざ大変なことをしているかというと、卒業に必要な単位を可能な限り早く取っておきたかったからだ。
ちなみにもしCSCI 567の単位が取れれば、あとは 2018年の秋学期に2つ、2019年の春学期に2つ、授業を取るだけで卒業できる。一学期に3つ授業を取るのはしんどいだろうなーと思っていたので、この夏に授業を取れたのはありがたかった。
Web Technologies コース履修義務免除の嘆願
僕がいる Scientists and Engineers Program では、 CSCI 571 Web Technologies の授業が必修になっている。
だた自分は三年間プロのソフトウェアエンジニアとして働き、特にWebアプリケーションに関しては専門だったので、わざわざ高い授業料を払ってまでして、すでに知っていることを学びたくはなかった。すでにその授業を取った友人からの話とシラバスによると、PHPでWeb サーバーを建ててAngularでフロントエンドを作ったりiOS/Androidアプリを作る授業らしい。それもう飽きたやつや。
そこで、嘆願書(Petition)を書いて、CSCI 571 を取らなくても別の授業でそのかわりにしてください、と大学にお願いしたのだが、嘆願書を提出して一日で却下の返事が来た。
文法チェックや構成を練るのに二日かけた嘆願書なのに、まったく報われなかったのだ。いくらなんでも却下までの時間が短すぎるので、これはもう原則として無理ということだと思う。
春学期の振り返り
CSCI 402 Operating Systems
http://merlot.usc.edu/cs402-s18/
Grade: A
Weenix というUnix-likeなOSをCで実装して、プロセスやスレッド、割り込み、ファイルシステムの仕組みを勉強する授業。 Operating Systems In Depth: Design and Programming という教科書をもとにしている。
USC のCS大学院生向けの講義のなかでもきついことで有名。ただ、まじめに勉強すればよい成績を取ることはそれほど難しくなかった。プロジェクトの量にひるまずに向き合い続ければなんとかなる。別に徹夜したりしなくても大丈夫。
なのだが、もしかしたら自分が幸運だっただけなのかもしれない。というのも、チームメイトがとても優秀だったのだ。複雑なロジックを短時間で実装したり、原因の箇所がわかりにくいメモリコラプションのバグを発見したり、とにかく問題解決ができるメンバーが揃っていた。
もしかしたら、ほかの学生からすれば、頑張ってもプロジェクトを終わらせられない、つらい授業だったのかもしれない。
この授業、情報交換用に Google Groups が教授から提供されていて、誰かの質問に対して適切な答えを投稿すると得点になるという仕組みになっている。投稿者の名前がわかるので、誰がどの程度授業の内容を理解しているのか投稿から推測できた。
その Google Groups によく優れた答えを投稿していた人がいた。この人がいるチームは安心できるだろうなと傍目で思っていたのだが、あとで、そのチームがプロジェクトのOSを最後まで実装できなかったことがわかった。
プロジェクトの後半に入ると、作業のほとんどがデバッグになってくる。チームに適切なデバッグができる人がいる、いないで差が大きくつくので、最終局面が乗り切れなかったのだと思う。 Google Groups の投稿からも、デバッグに苦しんでいる様子が伝わってきていた。
CSCI 561 Introduction to Artificial Intelligence
https://www.isi.edu/robots/CS561/general.html
Grade: A-
大学の講義としての人工知能を学ぶ。 Artificial Intelligence: A Modern Approach を教科書に使う。
内容は特に変わったところはなく、教科書の内容のうち重要な点をスライドで説明する形式。一学期に3つの宿題が出されて、その結果が成績全体の25%に換算される。宿題は Python で競技プログラミングのマラソンマッチのような問題を解く。50個のテストケースが用意されており、テストケースをパスした数で成績が決まる。
最終試験のあとに成績分布が公開されたので計算したところ、自分は平均点くらいだった。宿題とテストの凡ミスがなければAは取れたと思うと悔しい。
コーディング面接の練習
最近は Pramp でコーディング面接を練習している。これについてはあとで詳しく書きたい。
寮からルームシェアのアパートに引っ越した
Troy Hall という USC Housing の学生寮の契約が終わったので、Pinscreen社に近い West Los angeles にあるアパートに引っ越した。 Craigslist でルームシェアを探していたら見つけた物件で、家賃が月 $1,095 とお安い。
寮についてもあとで別に詳しく書くつもり。