フラミナル

考え方や調べたことを書き殴ります。IT技術系記事多め

TeachYourselfCSでコンピュータサイエンスを独学する

そろそろ真面目にコンピューターサイエンスを学ぼうと思ってこれにたどり着いた。

github.com

その記録について書いていく

この記事を書いた人間の前提知識

  • ITエンジニアとして10年超働いている
  • インフラ、ネットワーク、クラウド、セキュリティ、IoT、SRE、ブロックチェーン、バックエンド、モバイル、フロントエンド、マネージャーを経験
  • 文系の大学卒
  • Recursion で最低限のコンピューターサイエンスは履修済み
  • ネスペ・セキスペ・クラウドベンダーの上位資格は持ってる
  • 英語はTOEIC 780 / 洋書は読めない
  • 数学は中学レベル

学習スタイル

  • 毎日1時間ぐらいコツコツやる
  • NotebookLM / ChatGPT を使ってAI助けてもらう
  • 自分は絶対理解できるわかるという精神でやる
  • 適当にやらない

1. プログラミング

  • https://www.vocrf.net/docs_ja/jsicp.pdf を使って SICP(Structure and Interpretation of Computer Programs) を読んだ
  • 最初の3章までやればいいということでやった
  • 数学的な問題や、別の言語でなら書けるみたいな理由でめちゃくちゃ飛ばしたら、結局ほぼなにも得るものがなく終わってしまった(とはいえ1ヶ月はかかったが)

色々調べてみると、同様の内容をより簡素にわかりやすく書いてくれている本があるということなので、これをまたゆっくりやってみようと思う。

2. コンピュータアーキテクチャ

とりあえず絶版になってるこの本を買った。

手に入りづらいので英語の PDF はこちら。(Google / DeepL で翻訳しようとしたら大きすぎてエラーになったので分割する必要あり) https://www2.cs.sfu.ca/~ashriram/Courses/CS295/assets/books/CSAPP_2016.pdf

3. アルゴリズムとデータ構造

下巻がいろんなアルゴリズムの紹介になっているようなので上巻だけ買った。

ただ、いきなりこの本にいくのがハードルが高かったので本棚に埋もれていたこの本をやっている。

4. コンピュータサイエンスのための数学

5. オペレーティングシステム

6. コンピューターネットワーキング

7. データベース

英語の PDF を入手して DeepL で日本語にしたものを利用。

1. 「データベースシステムのアーキテクチャ」

データベースシステムのアーキテクチャに関する様々な側面を解説し、プロセスモデル、並列システム(共有ナッシング、共有ディスク)、ロック、ログ管理など、DBMSの設計と実装における重要な概念を扱います。 また、データキューブやOLAP(オンライン分析処理)などの分析データベース技術についても触れています。

2. データベース「レッドブック」

データベースシステムの設計における重要な概念(クエリ計画、並行性制御、データベース復旧、分散)を解説し、最新のデータフローアーキテクチャ、データキューブ、ストリーム処理、Webデータ、およびそれらの技術が現代のデータ管理にどのように適用されるかについて議論します。また、NoSQL データベースや NewSQL データベースについても触れています

3. Data and Reality

現実世界を記述する際に内在する問題点について哲学的な議論を展開し、データベース研究者にとって有益な洞察を提供します。

データモデリングにおける基本的な概念(存在、同一性、属性、関係性など)を探求し、情報がどのように認識され、コンピュータベースのシステムでモデル化されるかについて考察します

8. 言語とコンパイラ

9. 分散システム