2023年8月に実施された京都大学大学院 情報学研究科 社会情報学コースの院試に合格しました(2024年4月入学)。私は現在社会人のため、働きながらの受験チャレンジとなりました。
長くなりすぎたので院試の様子についてと、各教科の勉強についてを別記事にしました。こちらは院試で出題される各科目についての私の勉強法についての記事です。
院試の様子は以下の記事になります
参考になりましたら幸いです。
基礎科目
基礎科目は「入門コンピュータ科学」をひたすらにやりこむだけかとは思います(コンピュータグラフィックの章は範囲外なので注意)
章末の演習問題はやりませんでした。しかし、試験は演習問題をもとにした問題もでているように思いますのでやっておくに越したことはないように思います。
ただ、参考書の内容さえ押さえておけばそれを応用させるだけなので、試験一発勝負で対応することもできるように思います。
1章 データストレージ
第1章ということもあり、そこまで難しいことは書いていません。ただ、ストレージシステムの種類、データ圧縮方法の種類など、漠然とした知識ではなくしっかりと説明できるようになっておく必要があります。
2章 データ操作
この章の内容は説明問題で頻出します。
プログラム内蔵方式、RISC/SISC、マシンサイクル、ダイレクトメモリアクセスなど、過去問を参考にしながら問われやすい単語を説明できるようになっておく必要があります。
また、マシン語は近年出題されているので押さえておくと良いと思います
3章 OS
この章も説明問題で出題されることが多いです。
OSがどのような構成要素からなるのかを理解しておく必要があります。
また、マルチプログラミング、セマフォ、デッドロックも頻出ですので、説明できるようにしておくのがよいです。セキュリティについても過去出題がありました。
4章 インターネット
この章は基本的に全部大事としか言いようがないような気もします。
プロトコル、インターネットアーキテクチャ、サーバー/クライアント、TCP/IP、暗号、、全部大事です。
インターネットのソフトウェア階層の表記がOSI参照モデルともTCP/IPとも微妙に異なるのが少し気になりましたが、教科書通りの表記で説明できるようにしておきました。
5章 アルゴリズム
この章は実践的な内容が多いです。教科書で勉強するよりもプログラミング経験がものをいう範囲です。たぶんこの章に関してはアルゴリズムの入門書とかAtCoder対策本とかをやった方が点数あがると思います。
探索アルゴリズム、ソートアルゴリズムの代表的なものは覚えておく必要があります。また、試験における問われ方は疑似コードになることが多いです。そのため自分流の疑似コードの書き方を身に着けておくことも大事だと思います。
近年はハノイの塔、クイックソートなど再帰を利用したアルゴリズムを問われることがあります。ここも対策しておいた方が安心だと思います(私はクイックソートなんて出ないと思ってたのですが、2022年実施入試で出題されてて死ぬほど焦りました。この年に受験してたら100%落ちてた)
6章 プログラミング言語
この章も実践経験がものをいう範囲ですね。特にオブジェクト指向は実際にプログラムを書いたことがあるかどうかで理解度が全然違うと思います。
C++, C#あたりでプログラムとかを書いてみると理解の助けになります。私は会社で以下の参考書を使用していました。
クラス、オブジェクト、コンストラクタ、ポリモーフィズム、カプセル化などを説明できるようにしておく必要があるかと思います(このあたりになると専門科目のソフトウェア工学と被っているとは思います)
7章 ソフトウェア工学
ここは専門科目のソフトウェア工学と範囲が被るためか、あまり出題されていない印象があります。
とはいえウォーターフォールモデル、アジャイルなどのソフトウェア開発モデルについては問われることがあります。
過去問でも出題が少なく、あまりこの章を勉強していた記憶はありません。
8章 データ抽象
メモリへのデータの格納方法についての章ですね。これも実践経験があるとかなり有利です。特に配列、リスト、スタック、キュー、木などは競技プログラミングとかではよく出る話なので、すでになじみ深い人もいると思います。上で紹介した競技プログラミング用の参考書などを読むと理解が深まるかと思います。
リストにデータを格納する際のポインタも、ある程度プログラミングを実際に書いていればわかってくる部分かと思います。C#などではあまり明示的にポインタを使わないので、ポインタを理解しようと思うとやはりCを勉強するのが良いのだろうなとは思います。会社でCを使って制御ソフトを書いたりしていたので割となじみがありました。
会社でのプログラミング経験があるので、この章はあまり勉強しなくても分かったという感じでした。
9章 データベース
この章も専門科目のデータベースと被るためか、あまり出題がありません。
2023年実施のテストで専門科目にデータベースが無かったため、基礎科目の方で出題がありました。
専門用にデータベース勉強しておけば、こちらはたいして勉強しなくてもいいように思います。
11章 人工知能
この章も過去問での出題はあまり無いようです。専門科目と被るからかと思います。
そんためこの章はあまり勉強していないように思います。
12章 計算の理論
この章は出題されるトピックが多く、対策しておく必要があります。
チューリングマシン、停止問題、P/NP問題、RSA暗号
これらはちゃんと説明できるようにしておくとよいと思います。とくにRSA暗号は過去に原理の部分まで踏み込んだ出題があったので、数式を用いてちゃんと説明できるようにまでしておくと安心だと思います。
専門科目
専門科目はデータベース、情報システム、機械学習、強化学習、ソフトウェア工学、ヒューマンインターフェースを勉強しておきました。過去問の傾向的に上記の科目を対策しておけば、太刀打ちはできると思います。
データベース
データベースは「データベースの基礎」を参考に過去問を解いていくような形で勉強を進めました。
関係論理、関係代数、SQL、データ格納、正規形、トランザクションなど出題範囲が結構広いのですが、広く浅く出題といった感じで出題されます。ですのでしっかり対策すれば割と高得点が狙いやすい科目かなとは感じました。
データベースをやったことがない人間からすれば慣れない概念がたくさん出てきますが、ネットにも割と情報があるので調べながら少しずつ理解していく感じかと思います。
ただ、これは受験後に知ったことなのですが、データベースの科目を担当していた教員の方が退官されていたそうです。2023年実施試験にデータベースが出なかったのもおそらくこれが理由かと思われます。
そのため来年以降もデータベースが出題される可能性は少ないかもしれません。。
情報システム
正直これは捨て科目でした。
過去問を確認してみると、年を経るにつれて難易度が爆上がりしているというのが感想でした。ネットで調べてもあまり有益な情報が手に入らず、過去問の解答を作成することも正直ままならない難易度だったので、これはあまり力を入れていませんでした。
内部生はこの科目どうやって勉強してるんや。。?
機械学習・強化学習
機械学習は「はじめてのパターン認識」「人工知能(溝口、石田)」、強化学習は「強化学習(Sutton)」で勉強をしていました。
機械学習の問題はミニマックス、パーセプトロン、サポートベクターマシンなどが頻出です。
ミニマックス、パーセプトロンは「人工知能」で結構詳しく説明されてて役に立ちます(これは阪大の院試対策で勉強していたのですが、こちらにも役に立ってくれました)。
サポートベクターマシンは「はじめてのパターン認識」に詳しいです。数式も込みで説明できるようにしておきました。
ついでですが、2023年実施試験で出題された手書き文字の機械学習による認識、これはたまたま「Pythonによる機械学習入門」という参考書を趣味でやったことがあったというのが功を奏しました。この本に限らず、機械学習の入門書なら確実に手書き文字判別の話題は出ます。一冊くらいは勉強してみると良いかと思います。
強化学習はSutton本一択!!!!
これやっておけば間違いないです。まじでこの本を参考にして院試の問題作成しているのかってくらい出題範囲を網羅しています(値段高いですけど、、それだけの価値はあります)
過去問からよく出る部分をこの本をもとに勉強していきました。6章くらいまでやっておけば院試の範囲はカバーできると思います。
2023年実施試験ではQ学習を具体例とともに計算する問題が出題されました。おそらくこれもSutton本やってなかったら解けてなかった。。危なかった。。
あと、インターネットの情報として以下のサイトが参考になります。海外の大学の資料のようですが、マルコフ過程などの解説はここが詳しいです。
ソフトウェア工学
ソフトウェア工学は「ソフトウェア工学の基礎」という参考書で勉強をしました。
ソフトウェア開発プロセスやUMLなどの基本的な部分はカバーできています(フィージビリティスタディは書いてなかったです(憤怒))
もしかすると他に院試に最適な参考書があったかもしれません。
オブジェクト指向やポリモーフィズムは会社での実務経験で知っていたのであまり追加で勉強はしていませんでした。この辺りは実際にプログラミングを書いてみる方が勉強になると思います。
ヒューマンインターフェース
ヒューマンインターフェースは「Interaction Design」をもとに勉強をしていました。
基本的にこれ一冊で試験範囲は網羅できていると思います。
しかし問題があって、、この書籍は英語で書かれているということです。。私はKindleで購入して、翻訳機能を使いながら勉強しました。
受験後に発見したのですが、「新しいヒューマンコンピュータインタラクションの教科書」という本がそれなりに試験範囲をカバーできていました。
まずはこちらで勉強してみるのもいいかと思いました。
最後に
ここまでお読みいただきありがとうございました。
院試を受けるに際しての私の勉強法をできるだけ詳細に書かせていただきました。
これから院試を受ける人の参考になりましたら幸いです。
コメント