(独学)コンピュータ・サイエンスの書籍・動画
私は理学系ですが情報系でない学科を卒業しました。社会人になって、Webアプリケーション開発に興味を持ち、更にコンピュータ・サイエンスも体系的に勉強したくなり、仕事の傍ら日々勉強しています。人生遠回りしている気がしますが、好きなことをしているときは楽しいです。その際に購入した本・読んだ本をまとめることにしました。インターネットで調べると色々な書籍が出てきますが、基本的には私が実際に手にとったもの(または手元にあり読む予定のもの)だけを(備忘録的に)載せています。興味のある人は参考にしてください。他に良い本があるという場合は紹介いただけると幸いです。
注意ですが、具体的にWebアプリケーションを作りたい、IoT機器を開発したいという場合には参考にならないと思います。それらを開発するなかで疑問に思ったことを逐次インターネットで調べていくほうが効率が良いです。
コンピュータサイエンスの分野
体系的に学ぶためにどのような分野があるのかを調べました。東京大学の情報系の学部カリキュラム(2,3年次)を参考にしていますが、すみません、すべてカバーはできていないし、正直レベルも高いです。中には英語の書籍もありますが、英語は割とインターネットでPDF化されているので購入しなくても済むかもしれません。
東京大学カリキュラム
アルゴリズム・計算系
アルゴリズムとデータ構造
専門書籍はあると思いますが、自分で手を動かしながら、問題はAtCoderなどを利用してデータ構造について計算量なども含めて勉強しました。初心者がは前者から読むのがおすすめ。
離散数学
グラフ理論・組み合わせ理論・最適化問題など
連続・離散の最適化問題について広く記載された最近の本。どちらかというと自分で計算できるようになるための本。理論的につっこみたければより専門的な書籍が必要かな。
連続系アルゴリズム
連立1次方程式、固有値問題、非線形方程式、偏・常微分方程式をLU分解、CG法(共役勾配法)など計算量をなるべく少なく解く
はじめて勉強する場合は、書籍よりも東大の講義がわかりやすかったです。
書籍は大学講義では参考書籍をして挙げられているので有名どころだと思います。
ハード・OS系
計算機システム
通称パタヘネ本。コンピュータの構成要素からプログラムがどのようにデコードされて電気信号としてCPUで処理されているかが体系的に説明されていると思います。
もう少しデジタル回路がどんなICで構成されているかを理解したければこちらでイメージがつかめるのではと思います。
オペレーティングシステム
「はじめて読む8086」はすらすらと読めます。プログラムが与えられたときにレジスタ・メモリにどうデータがやり取りされるかわかりやすいです。パタヘネ本を読破しているのであればスキップしてもいいかも。「はじめて読む486」は16bitアーキテクチャから32bitがどう変遷してきたか(仮想メモリとかプロテクトモードとか)わかりやすいと思います。
コンピュータ・ネットワーク
じゃっかん物足りませんがまず概要を理解するには入門編がおすすめです。
現在読書中。。
OS関連
もう少し深く理解したいと思い下記2つを手にとっています。
- 30日でできる! OS自作入門
- Silberschatz, Galvin, Gagne: Operating System Concepts, 7th Edition
ネットワーク系
データベース系
理論的なところを勉強したいのですが良さげな本がない。洋書しかないか。
コンパイラ系
今の所必要性を感じておらず保留中。
参考になる動画(東京大学 数理・データサイエンス関連教材)
- 数理関連の動画がアップロードされています。
http://www.mi.u-tokyo.ac.jp/teaching_material.html