院試の話

(2015-10-15 移動)

情報理工のコンピュータ科学の院試体験記もどき。

・前提
 数学:教養学部で数学1Aと2を履修(評価はどちらも可、しかも1Aは再履修してる)
 英語:教養時代は全て評価が可、大学受験以降真面目に触れてない、6月末に受けたTOEIC(未対策)の結果が600以下だった(酷い)
 専門:以下を履修、評価は可or良がほとんど
  IS:オペレーションシステム、情報論理、離散数学言語モデル、計算量理論、コンピュータネットワーク、OS演習前半、FPLP演習前半、知識処理論
  eeic:アーキテクチャ、ネットワーク工学
  応用情報技術者の資格を前年秋に取った
 (※所属は文学部哲学専修でしたが、前期教養は理一でした。でも数学は苦手。)

・共通科目の数学
 線形代数微積分(微分方程式)・確率の3題。過去問の傾向は、線形代数は何とか太刀打ち出来る問題が出て、その多くは固有値固有ベクトルや、実対称行列の性質を理解していれば難しくない。微積分や微分方程式は毎年交互に出題されて、私の年は微分方程式だと予想していた(実際にそうだった)。たまにさっぱりわからない問題が出るけど受けた年の直近の過去問は誘導がついていたために困ることはなかった。確率は離散確率ばかりなので期待値や分散がわかっていれば作図や整理を丁寧にやることで題意が把握しやすい。
 ということで、私は4/5月に国総の数理科学の対策をしていたこともあって、基礎的な部分は後回しにして過去問を中心に進めた。取り組んだのは5年分くらい。詰まった問題があったときは、手元に解答がないわけなので、調べて解くことになった。ただし時間をかけたのはほとんどが線形代数で、微積分は今年は出ないだろうとほぼノータッチ、微分方程式は『大学院への数学』の該当の章の前半部の問題を解くことで基本事項を確認し、確率は独立した参考書を使っての対策はしなかった。線形代数は『線形代数講義 (ライブラリ数理・情報系の数学講義) 』やさらに数値計算も含めて『これなら分かる最適化数学』が理解しやすかった。黄色の『演習 線形代数』でもいいのかもしれないけど、線型空間の説明が少なくて初学者には辛いだろうし、もっと他に良い参考書はたくさんある。
 直近の年度の問題が易しかったので油断していたし、他の学生も同じくらいの対策度だろうからと院試対策全体では2割ほどの時間をかけた。

・英語(TOEFL-ITP)
 リスニング・文法・リーディングという問題構成。
 リスニングは参考書買って眺めたものの実際に解くことはほとんどなくて実質的に未対策。直前1週間にたまに聞いたりして全く久しぶりな状態からは脱却させておいた。前日に参考書の模擬問題を解いたら全く音が耳に入ってこなくて3割くらいしか取れず絶望的だったのだけど、本番はそれよりは良いと思う。
 文法は『全問正解する~580問』を末尾2セット残すくらいのペースで定期的に解いた。問題のパターンは決まっているので、解き慣れれば点数は安定する。直前は32-37/40くらいの点数を彷徨っていて、本番もこれくらいの点数だと思う。
 リーディングは『リーディング スピードマスター』とかいう青い本をやった。ただし問題の質はよくわからない。文章ひとつあたり10分のペースで解けるようにした(というか普通にそれくらいで解けると思う)。参考書は始めに全部通して読んでから解くなどと書いていたが、最初の段落と最後の段落だけ眺めて何についての文章なのか把握して、小問に応じて読んでいく感じでいい。語彙は『4000』の黒い本で80点レベルくらいまで抑えた(直前一週間もなかったのではっきり覚えてるの6割くらいだったと思う)。実際の試験問題はこの本の予想問題より難しいし、文章ごとの問題数は一定ではなく9-11問でばらばら。語彙問題の水準は同じくらいなのだけど、読解問題が解きづらい。文章ごとの最後の小問が「この段落に続く内容はどれか」を選ばせる問題だとか書いておきながら、本番でそんな問題なかったりするし、鵜呑みにしてパターン化できると思ってると少し驚くことになる。点数は参考書で35-42/50。
 事前に生協が開催する模試を受けようと思っていたのだけど、開催されなかったのか知らないが受けられなかった。ということで全パート通して取り組むのは本番が初めてだったけど、文法とリーディングで時間配分が意識できていれば何も問題ない。
 スコアはいくつだろう。530-560くらいかなぁ。院試対策全体では2-3割の時間をかけた。

・専門科目
 まず過去問を見る。4問*2セットで8問。各分野からまんべんなく出題されるが、アーキテクチャ寄りが多かったり理論寄りが多かったりする年がある。過去7年分くらいの分野ごとの出題頻度を表にしてみて、グラフィックスは出ないなとか、ネットワークが出そうだなとか、OSやアーキテクチャ形式言語は毎年出るなとか、数値計算は今年は出なさそうだな、とか、ざっくりした傾向を掴む。勉強が進むにつれ分野の分類がよくわからなかった問題のテーマが後になってわかったりするので、1週間前くらいに再確認しておく。過去問は3年分解いた。
 時間配分は意識する必要があまりなくて、他の問題と行き来しながら書ける問題から書くスタイルでいいと思う。分からない問題について書こうとして散漫な文章を残して時間を浪費するなんてことはやってはいけないし(本番でやってしまったが)。
 以下、分野別に軽く対策内容を書く。
 情報理論:『情報理論の基礎』(共立出版)を前年の春に読んで通信路符号化まで触れていた。忘れていたので一通り読み直した。情報量やエントロピーの問題がこれまで出ていないので対策の必要があると考えた(学部の授業でもし扱っていないのだとすると無意味だが)。通信路やそれに関する確率の問題は過去数年でいくつか出題されているので(記号の確率の問題)、情報理論(情報数学)は確率の問題として登場すると考え、深追いはしなかった(最後の問題以外はその場で解けるだろう)。
 情報論理:履修済みではあったが原始再帰関数や計算可能性あたりの認識の甘さや知識の漏れがあったので『C言語による計算の理論(Computer Science Library) 』を読んだり授業のテキストを読んで再確認した。同シリーズの参考書はよくまとまっているので基礎事項の確認に役立った(ほかに情報理論数値計算人工知能の基礎を読んだ)。
 数値計算:直近の過去問でニュートン法が出題されていて解けなかったので、他に似たような問題を出されたら怖いなと思い『数値計算入門』をさらっと眺めた。実際の問題では知識を問うようなことはせず誘導がつくはずなので、内容を覚えようとせず式変形をしっかり追う意識で読んだ(基礎的な手法のみ、全体の6割くらい)。
 アルゴリズム:『データ構造とアルゴリズム』(共立出版)を6割くらい読んで、蟻本をグラフアルゴリズムあたりまで読んで、過去問をきっちり確認して、ソートアルゴリズムをぐぐって確認して、くらいか。
 離散数学:上記アルゴリズムの対策に加えて講義内容の復習。おもにグラフ理論にしか出てこない概念を復習するのと、Max-flow min-cut theoremの確認するのと。
 計算複雑性:計算クラスの概念について単独で出題されたことはないのであんまり意味がない気がするが、講義内容の復習(と上記『計算の理論』の計算量にかかわる章)。P/NPなどの定義や代表的な問題の確認。実際はアルゴリズムの問題で計算量の見積もりとして問われることが多いので、日頃から考える癖をつける。
 数理言語学形式言語は履修していなかったのでテキストを入手して丁寧にやった。出題頻度が極めて高いので損しないだろうと予想。題材は講義内容に被っていることが多い(H24の同値類DFAなど)気がした。さらに直近で文脈自由文法が出ていたのでオートマトンが出るだろうと重点を置いた。実際にオートマトンが出題されたので勝ち(あまり講義的な内容じゃなかったので大差なかっただろうけど)。言語モデルは講義内容の復習に終始した。ラムダ計算出そうだから自然数の演算などやっておいたのだけど出なかったので残念。
 アーキテクチャ論理回路は出題が多いので必須。eeicの講義資料(坂井先生)を使って勉強した。アーキテクチャの復習も同様。命令セットやアセンブリについてはそこまで突っ込んだ勉強はしなかったけど、後になって『リバースエンジニアリングバイブル』やオライリーの『HACKING』に丁寧に書いてあったことを知る。これを読んでおけばいいかもしれない。現に試験では3進数の真理値表と論理回路を書く問題が出た。
 オペレーションシステム:講義内容の復習。スケジューリングや排他制御など出そうなところを対策。講義の試験問題を復習したのでバランスよく確認できた。OS演習のスライドを確認してファイル出力やネットワークプログラミングについても確認。
 コンピュータネットワーク:講義内容の復習。経路制御のアルゴリズムがグラフアルゴリズムの確認になる。あとはサブネット分割など、講義の試験に出た内容を確認。
 グラフィックス:無対策。前年に双線形補間が出ていて過去問を解いた時にさっぱりわからなかったのだけど、じゃあ今年は出ないだろうと甘く見た。対策をするならComputer Science Libraryの本を読めばいいと思う。

・時系列
 何だかんだ適当だった。過去問を解き始めたりしたのは7月に入ってからで、数学はそれ以前からちまちま進めていたけど、本腰を入れて時間をかけられるようになったのは7月中旬くらい(卒論の計画提出やICPCがあったので)。自分が履修している講義の束縛がほとんどなかったので、図書館に行ったりしながらのんびりやっていた(どう考えても自由度の高さが秘訣)。
 本番の感触について。英語はまずまずで、文法とリーディングの時間は足りた。数学は3割くらいの出来で、線形代数はおおよそ書いて(固有ベクトルを求める問題は無視)、微分方程式は何もわからず(楕円と二次曲線の式を久々に見る駄目っぷり)、確率は離散の問題じゃないのかよと愚痴って一問目だけ何とか解いた。
 専門科目午前は、2問目の再帰関数の問題に1時間かけて呼び出し回数の式の意味がわからずに撤退、他は1問目をおおよそ完答し3問目(DPの問題だっけ)は1つ目の擬似コードを書いて終わり、4問目(配列の和の問題だっけ)は分割して足す計算量の立式だけして終わり。あんまり芳しくない印象。4-5割ってとこだろうか。
 専門科目午後は、1問目をおおよそ完答し、2問目のオートマトンの最後の問題を残して次、3問目(プリム法の問題だっけ)のデータ構造の考察を適当に一行ずつ書いて次、4問目の3進数加算回路の真理値表と4桁の略図を書いて終わり。5-6割くらいかな。
 という感じで専門科目は合わせて半分前後だろうと思う。内部生の平均あればいいなぁって手応え。英語はおそらく他の学生があまり対策出来てないだろうから平均くらいで、数学は難しかったので山2つ分布の後ろの山の平均くらい。つまるところ全体の平均ちょい下くらいの成績だったと思う。んで無事合格。研究室の志望者順位が不安だったのだけど何とか通った。これで受からなかったら困ると思ってたけどこれで受かっていいのかという気持ちもある。もっと出来る人だけを絞って取るべきじゃないか。
 面接忘れてた。面接はプログラムは書きます&博士課程にも進む予定ですという前向きな答えをしておいた。あとは院に進んでやりたいことを言って終わり。内部の人は成績の良し悪しや卒業可能性などを聞かれていたらしいのだけど、私は成績には触れられることはなかった。第二志望の話もされず、他にどこの院を受けているかも聞かれなかったので、綺麗に第一志望に通っているかすっぱり落とされているかのどちらかだろうと思っていた。

こんな感じだろうか。受験しようと考えてて万が一この記事見つけて知りたいことがある人などいたらTwitterか何かで適当に聞いてください。

2014-10-12追記:
成績開示した。
 英語(TOEFL-ITP):550くらい/677点
 数学:100くらい/300点
 専門:400くらい/800点
という感じだった。数学も専門も採点が甘いみたいなので思いついたことはたくさん書くべきかもしれない。平均や順位、面接の情報はなかった。