スタンフォードのコンピュータサイエンス(マスター)に合格するまで

2014年11月
やたらと時間も余っているし何か勉強しようかと思ってスタンフォードのコースを受けることを決める。SCPDという授業が受けられるプログラムがあって、SCPDメンバー企業の従業員なら誰でもスタンフォードの授業を取って単位を取得することができる。通常の授業を普通の生徒と横並びで受けてテストも受けて、成績も区別なくつけられる。ただし履修生なので認定証は取れても学位は取れない。

この段階ですでに将来的には入学してもいいかなとは思っていた。18単位を上限として履修生で取った単位はマスタープログラムにトランスファーできるし(卒業に必要なのは45単位)、実際に授業を受けて続けられるかどうかを見てから決めればいいかなと思ったのだ。それにSCPDの履修生としていい成績を取ると入学が楽になるという情報もあった。たとえばスタンフォードの教授が書いたこのメールの情報だと、難易度は外部、SCPD、内部進学の順に簡単になると書いてある。結局のところ入学した後授業でうまくやっていける学生がほしいので、授業でどうだったのかという一次情報をすでに持っている学生のほうが有利なのだ。それにどうも必要な点数も違うぽい。

2015年1月
CS243
(プログラムの解析と最適化)の授業が始まる。僕も言語処理系に関してはプロなので簡単だと思っていたらかなり難しかった。自分の学校におけるノウハウが足りていないところもあった。仮に今から始めるとしたら最初から全力で取り組むし、宿題は一人でやるのではなくペアを組んでやると思う。結局Aマイナスという成績で終わる。これは悪くはないが素晴らしい成績というわけでもない。

2015年4月
CS143(コンパイラ)の授業を取る。前回の反省を活かして全力で取り組んだ。このコースはスタンフォードのコンピュータサイエンスの中でも難易度が高い方ということになっているみたいだが、そうは言っても大学の授業のプログラミング課題のレベルなので僕にとってはそう難しいわけでもなく、理論もある程度把握しているのでペーパーテストも難しいというわけではなかった。ただし課題はやたら時間がかかった。

クラスの掲示板に自分がコンパイラを書いた時の話を投稿したり、教授が新しく書いた教材のプルーフリーディングを勝手にやってメールで送ったりした。よかれと思ってやったんだけど、結果的に教授に覚えてもらえてよかった。結局テストも宿題もほぼ満点で終えて、Aプラスを取る。クラスでたぶんトップの(あるいはそれに次ぐ)成績だったんではないかと思う。この時点までは一度記事に書いた。

この教授に推薦状を書いてもらえることになった。どういう推薦状だったのかは読めないのでわからないが、かなり強く推薦してもらえたようだ。合格したあとメールを送ったら、「君が通らなかったそちらのほうがすごく驚きだったよ」と言われた。スタンフォードの合否判定委員会において一番信用があるのは内部からの推薦で、委員長を務めていたこともある教授は当然それを知っているわけだから、「あれだけ推薦して落ちるということはないだろう」ということなのだろう。

2015年7月
出願するのならそろそろGRE(大学院出願に必要な標準テスト)とTOEFLを受けないとなぁと思いつつだらだら時間がすぎる。

2015年8月
GREは年間5回まで受けられるのでとりあえず試しに準備なしで一回受けてみる。Verbal(英語)、Quantitative(数学)、ライティングというセクションにわかれているのだが、148/162/3.5という平凡な点数を取る(170点満点)。スタンフォードではGREでの足切りはないのだが、そうはいっても出願してくるひとはトップ1割くらいの点数は取ってくるようなので、これでは門前払いを食らってしまう。

しかしGRE、英語は鬼のように難しくて、数学は笑ってしまうくらい簡単な変なテストだった。英語は単語を覚えているかが勝負で、大学院レベルの学生のための英語なので、アメリカ人でもよく知らない妙な単語ばかりでてくるのだ。4択問題で4つとも単語がわからない問題とかばかりで苦笑しかなかった。一方で数学はふざけているのかと思うくらい簡単で、中学生でも満点が取れるんじゃないのと思ったくらいだ。「800の35%は300より 大きい/小さい/同じ」みたいな問題がでたりする。これが大学院レベルなのがまったく意味不明だが、全出願者が満点にならないのもまた謎である。

MagooshのAndroidアプリで単語のフラッシュカードをやったり、同じくMagooshのサイトで練習問題をやってテスト対策をした。公式問題集もひととおりやった。

結局11月いっぱいまでで5回受けて、最後に取ったスコア(157/170/3.5)を提出。

2015年9月
そろそろTOEFLをやらないとと思っていきなり行って受験してみる。102点を取ったのでこれでいいかと思ったが、結局あと2回受験した。途中でTOEFL対策の勉強をしていないのでブレの範囲内でしかスコアが変わらなかった。よくできたテストである。

今から考えてみると何度もテストを受けたのは無駄だった。コンピュータサイエンスのマスターは85点が足切りということになっていて、それさえクリアしていれば何点でも関係ないようだ。

2015年12月
出願する。オンラインでフォームを埋めて書類を添付するだけだ。受験料は100ドルちょっとくらいだったと思う。出願が簡単だから普通は何校(人によっては何十校)も受けるものらしい。僕の場合はSCPDでしかやるつもりはないのでスタンフォードだけ。

念入りに何十回も書類を見直したのに、提出直後にレジュメの自分の名前にスペルミスを見つけて笑うしかなかった。

個人ホームページのURLを書く項目があったし、合否判定委員も応募者の名前でググったりもしてみるだろうから、ちょっと強く印象づけておくかと思って、それっぽいホームページを作り、さらに人気記事になるのがわかりきっているCコンパイラを作った話を英語に翻訳して載せた。  これは実際人気になって、周りの人からも「読んだよー」と言われた。どうせ自分と同類のひとたちが選考しているわけだから、僕が「(我ながら)こいつはできるな」と思うようなものを作れば、委員会メンバーも同じように思うに違いないという作戦。

2016年3月
そろそろ結果が届いてもいいはずだが……と思いながらその手の掲示板を見ていたら、電話したら結果を教えてもらえたという怪情報を見つける。ほんとに?と思って推薦状を書いてもらった教授に一応メールで訊いてみると、"Unfortunately,"(残念ながら)から始まるリプライをもらって強いショックを受ける。しかしメールを開いてみると"Unfortunately, I don't know."だった。俺を殺す気か。結局掲示板は荒らしだったようで、怪情報に踊らされた形となった。

その数週間後にメールで合格通知が届いた。第一クオーターの授業の期末テストが終わった直後だったので、たぶんそのタイミングを待って送ったんじゃないかと思う。

合格通知が届いて今になって思うのは、時間は必要だったけど、本質的に難しいとかではなかったなということだ。たぶん一番重要なタイミングはCS143でAプラスを取ったところなのだが、こういうふうに履修生として授業を受けられる環境にいたというのは幸運なことだった。英語とプログラミングがすでに高いレベルできる場合、真面目に取り組んでみればかなりいい確率で合格できると思う。授業は面白くてとても勉強になるし、僕は新しいことを学ぶのが好きなので、僕はやってよかったと思う。

今の悩みはシステムプログラミングをメインで学ぶかAIをやるかということで、システムプログラミングは得意分野なのでいい成績が取れることは間違いないのだが(13単位取った現時点でまだGPA 4.0をキープ)、やっぱしAIみたいな自分にとって新しいことをやったほうがいいのかなぁ、と。最近のAIの進歩は目覚ましいのですごいものが作れそうでかっこいい。プログラムシートを作るまでしばらく時間があるのでちょっとよく考えてることにする。

この記事が気に入ったらサポートをしてみませんか?