大学生活で読んだ専門書
ふと思い立ったので、大学在学中に読んだ本を並べます。(2024/01 追記 : 今頃になって発掘した。下書き程度だけれどせっかくなので公開する。)
あまり授業には行けず、授業資料と講義内容に対応する本で勉強して試験を受けるような人間だったけれど、勉強すればなんとかなる大学だったのが救いでした。東大に行っていたら今頃情報科学は学んでいないと思います。
B1
入学してすぐにスキーサークルに入り、そちらで遊びつつ、単位を回収しながらふらふらと数学をしていた。
入門 Python3
正確には入学前に読んだ。プログラミング人生の始まり。情報学科に入る前に基本的な概念(代入、list, dictionary, class など)をざっと眺めた。一回生の前期に「プログラミング入門」の授業があったのでわからないことはそちらで理解しよう、と言う気持ちで、難しいところは飛ばしながら読んだ。ファイル操作のあたりで詰まったような記憶がある。
解析入門I
調子に乗った一回生が読むことで有名な本。例に漏れず調子に乗っていたので読んだ。微積の講義がとてもわかりやすかったため、そちらで理解を追いつかせながら授業と同じくらいのペースで読みすすめた。本の演習はあまりやらなかったが、授業の演習課題が普通に難しくていい練習になったのを覚えている。
線形代数講義 現代数学への誘い
高校の頃になんとなくマセマの線形代数の本を読んでおり、具体的な計算は経験があったので、もう少し抽象的な取り扱いについて書いてある本として読んだ。あんまり有名じゃないかも。
集合と位相
「自然現象と数学」という名前にもかかわらずガッツリ集合と位相の話をする謎の科目があり、対応する本として読んだ。とても難しく、商位相が出てきたあたりで挫折した。(選択公理、Zorn の補題、整列可能定理が互いに同値であることの証明も追いきれなかった記憶がある。)位相空間の知識はあまり使っていないけれど、幾何をやると出てきたりするんだろうか。
群論入門
数学ガールを読んでいたら群についての話が出てきて、こういう話題もあるんだなーと思い、あまり前提知識のいらない「応用代数学」の講義を上回履修してさっさと回収することにした。講義に対応する本として読んだ。(上回履修をする理由として、3回生時点の負担を軽くしたいというのがあった。数回休んだら単位が認められない英語リーディングなどの必修が回収できず、その目論見はあまりうまくいかなかった。)本としては具体例が豊富で、証明も行間がほぼなかったので、あまり混乱せずに走りきれた。
現代論理学
人文・社会科目群の論理学の講義の教科書だった。数学が好きなので、論理学のことについて知らないわけには行かないと思い、「論理学I」, 「論理学II」 ともに履修した。きちんと読んだかと言われるとあやしい。
苦しんで覚える C 言語
学んだことのあるプログラミング言語が上に書いたPythonと、「プログラミング入門」の講義でやった Java だけだったので、なにかやろうと思って C言語の本に手を伸ばした。Python も Java もそんなにマニアックなことをやっていなかったので、C もそんなに変わらないなあと思ったのを覚えている。(今思うと全然そんなことはない。)
暗号技術入門
セキュリティの知識は大事らしいと聞き、当時の自分に想像のつく暗号の話を抑えようと思って読んだ。数学ガールと同じ作者さんで、とても丁寧な説明でわかりやすかった。
B2
数学ばかりやっていたが、情報学科くんだりまで来て数学ばかりやっているのでは面白くないと思い(個人の感想です)、計算機科学コースを選んだ。
統計学入門
確率論や統計の話に対応するために読んだ。情報学の人間としてはとてもよい本だと思う。今でも度々参照する。
論理回路
「論理システム」の講義の教科書。論理関数の諸性質について述べたあとに、与えられた論理関数を計算するような論理回路を設計する手法が書かれている。
コンピュータの構成と設計 第5版
パタヘネの略称で有名。「計算機の構成」や「計算機アーキテクチャ」の講義であったり、計算機科学実験でCPUを作成したときにとてもお世話になった。 現代の計算技術は魔法のようだけど、人間が作ったものなんだなあと感じられる。ヘネパタは読んでいない。
計算理論とオートマトン言語理論
「言語・オートマトン」の講義に対応する本。
電気電子回路
「電気電子回路入門」の講義に対応する本。
マスタリング TCP/IP
「コンピュータネットワーク」の講義に対応する本。とりあえずここに書いてある内容を理解していれば、Webシステムなどの通信を伴うソフトウェアを作るときに見通しが良くなると思う。
グラフ理論 基本とアルゴリズム
「グラフ理論」の講義の教科書。ぼちぼち競プロをやっていて簡単なグラフアルゴリズムは知っていたので、すらすら読めた。グラフという概念に慣れるのにおすすめの本。
多様体の基礎
幾何も少しはやっておこうということで読んだ。結局それから幾何の知識を使うことはなく、あまり真面目に読まずに写経していたこともあって、多様体の話はすっかり忘れてしまった。
基本情報技術者の本
なにか資格でも取ろうかなと思って読んだ。情報学科の人間としてはもうしっている内容が大半で、応用情報技術者をとればいいかと思ってこちらは受けなかった。
B3
夏頃に競プロを真面目にやり始め、そちらにのめり込んだ。また、型システムを扱う研究室に行きたいなと思って講義とは別に勉強していた。(結局配属に失敗したが...)
プログラミングコンテストチャレンジブック
競プロは一回生のときにKMCを通して知り、時々やってみたりはしていたが、あまり真面目にやっていなかったので茶色あたりで止まっていた。 周りの友人や先輩方がタダで東京に行っているのを見て、自分も行けたら面白そうだなと思ったのがちゃんとやり始めた動機だったと思う。 ネトゲを楽しんでいたつもりが、タダで東京に行けたり、ICPCでベトナムに行ったり、インターンに行けたりしてしまった。
はじめてのパターン認識
機械学習の話題についていくために読んだ。
オペレーティングシステムの基礎
OSの講義に対応する本として読んだ。今思うとこの時点でもっと詳細に書かれている本を読んでおけばよかったなあと感じる。
Types and Programming Languages
型システムの本。友人と輪講をした。ある程度読んだところで、自分が配属に失敗してあえなく終了となった。
計算理論の基礎
言語理論や計算理論についての入門書。第三巻でチューリングマシンを導入して、計算可能性や計算複雑性について取り扱う。「アルゴリズム論」の講義に対応する本として読んだ。
応用情報技術者の本
応用技術者を受けるために読んだ。B4の10月頃に取得した。
独習 C++
競プロをC++でやっているわりにC++の本をちゃんと読んだことがなかったので、さっと読んだ。
B4
Introduction to Algorithms
院試のアルゴリズムパートに対策するために読んだ。DPや貪欲法、最短経路など、個々の手法については知っていたが、そういった手法の正当性を証明する方法をちゃんと学んだのはこのときが初めて。(それまでは競プロの解説を頼りにしていた。)
OS自作入門
一度くらいはOSを作ってみようと思って読みつつ実装した。
SQL実践入門
SQL自体は授業でしっていたが、もう少し詳しく知りたくなって読んだ。
M1, 休学中
Combinatorial Optimization
アルゴリズムの専門ということで、ちゃんと読んだ。結局一般マッチングくらいまでしか読めていない。(その後が面白いらしいが...)
Graph Theory
グラフ理論もやろうということで maspy さんが募集していた輪読に参加した。どこかのタイミングで離脱した気がする。
線形代数I (東京大学出版)
なんやかんや線形代数は使うので復習した。
プログラミング言語の基礎概念
プログラム意味論の講義に対応する本。導出が正しいかどうかをチェックしてくれるオンライン演習システムがあって面白かった(たしか講義の評価にも使われている)
ネスペの本
ネットワークスペシャリストを受験するため、一通り勉強した。結局落ちてしまった。(今考えると午後が対策不足すぎた)
試して理解 Linux の仕組み
簡単なコマンドくらいは叩けるけどよく知らない概念(プロセスとか)について知りたいなと思い、読んだ。
Effective Modern C++
Chromium で C++ を使っていたので読んでみた。C++は魔境だなあとわからされた。
実践 Rust プログラミング入門
Rustが流行っているらしいと聞いて一通り読んだ。 所有権の概念自体は C++ で触れた事があったため、こんなものだろうという気持ちで理解することができた。
シェルスクリプト基本リファレンス
検索しながら適当に書いているシェルスクリプトについて理解を含めたいと感じて、通して読んだ。 リファレンスとしてもかなり優秀だと思う。
超高速グラフ列挙アルゴリズム
ZDDについて解説されている本。修論ではZDDを使わなかったが、所属研究室の話題なのでこれくらいは理解しておこうと思って読んだ。
M2
JavaScript 第2版
JSくらいは一通り理解しておこうと思って読んだ。
しっかり学ぶ数理最適化
梅谷先生が書いた数理最適化の本。連続最適化の話題は授業で聞いたことはあったがあまり真面目にやっていなかったため、よい復習になった。