Skilore

Computer Science Fundamentals

1. [概要](#概要)

9 セクション
55 ガイド

01Introduction

02Hardware Basics

05

CPUアーキテクチャ

CPUは「フェッチ→デコード→実行→ライトバック」を1秒間に数十億回繰り返す、計算の心臓部である。命令セットアーキテクチャ(ISA)の設計思想からキャッシュ階層、分岐予測、アウトオブオーダー実行まで、現代プロセッサの動作原理を体系的に理解することは、高性能ソフトウェアを書くための土台となる。

06

メモリ階層

「メモリは速いが小さく、ストレージは大きいが遅い」--- この制約がコンピュータアーキテクチャの全てを支配する。

07

ストレージシステム

データの永続化はコンピューティングの根幹であり、ストレージ技術の進化がデジタル社会を支えている。

08

マザーボードとバス

マザーボードはコンピュータの「神経系」であり、全てのコンポーネント間の通信を司る。

09

GPUと並列計算

GPUは「一つの命令を数千のコアで同時実行する」— CPU的な逐次処理とは根本的に異なるアプローチである。

10

I/Oシステム

I/O(入出力)はコンピュータと外部世界をつなぐ窓であり、多くのアプリケーションのボトルネックはCPUではなくI/Oにある。バス、割り込み、DMA、デバイスドライバ、I/Oスケジューリングを体系的に理解することが高性能システム設計の第一歩となる。

11

PCBと回路 — 論理ゲートから半導体プロセスまで

「NANDゲートひとつから汎用コンピュータを組み上げられる」という事実は、

12

容量と限界 — ムーアの法則・アムダールの法則・メモリウォール・電力の壁

「ムーアの法則は物理法則ではなく経済法則である。」半導体の微細化が物理限界に近づく今、ソフトウェアエンジニアが理解すべきは「壁の正体」と「壁を回避する設計戦略」である。

03Data Representation

13

2進数と数値表現

コンピュータの世界では全てが0と1で表現される。この「制約」こそが、デジタル技術の信頼性と普遍性を生み出す源泉である。

14

文字コードとUnicode

文字化けの原因は常に「エンコーディングの不一致」であり、UTF-8の仕組みを理解すれば根本的に予防できる。

15

整数表現と2の補数

コンピュータが負の数を表現する方法は「2の補数」という天才的な仕組みであり、加算器1つで加算も減算もこなせる。

16

浮動小数点数 — IEEE 754 完全ガイド

0.1 + 0.2 !== 0.3 という事実は、浮動小数点数の内部表現を理解しなければ永遠にプログラマを悩ませ続ける。本章では IEEE 754 規格の構造から精度問題の本質、丸め誤差の蓄積メカニズム、数値計算における典型的な落とし穴、そして実務での対策までを体系的に解説する。

17

圧縮アルゴリズム

データ圧縮の本質は「冗長性の除去」であり、情報理論のシャノン限界が圧縮可能な理論的下限を定める。ハフマン符号は統計的冗長性を、LZ 系は辞書的冗長性を、DEFLATE はその両方を同時に排除する。これらの原理を理解し、用途に応じた圧縮手法を正しく選択できることは、ソフトウェアエンジニアにとって不可欠な素養である。

18

ストレージ容量と単位

「ギガバイト」と「ギビバイト」の違いを正確に説明できないエンジニアが、ペタバイト規模のシステムを設計することはできない。

19

脳とコンピュータの比較

人間の脳は約86兆のシナプス結合を持つ超並列コンピュータだが、コンピュータとは根本的に異なるアーキテクチャで動作する。

04Algorithms

20

アルゴリズムとは何か

アルゴリズムとは「問題を解くための明確な手順」であり、プログラミングの本質はアルゴリズムの設計と実装である。

21

計算量解析(Big-O記法)

「動く」コードと「速い」コードの違いは計算量にある。O(n²) と O(n log n) の差は、データが大きくなるほど致命的になる。

22

ソートアルゴリズム

ソートはコンピュータサイエンス最古にして最重要の問題の一つである。比較ベースのソートには Omega(n log n) の理論的下限が存在し、この限界を理解することがアルゴリズム設計全般の深い洞察につながる。本章では、基本的なソートから高度なソートまでを網羅的に解説し、理論と実装の両面からソートの全体像を把握する。

23

探索アルゴリズム — 理論・実装・応用の総合ガイド

「データを見つける」ことはコンピューティングの最も基本的な操作であり、探索の効率がシステム全体の性能を左右する。

24

グラフアルゴリズム

SNSの友達関係、地図の経路探索、Webのリンク構造——世界はグラフで満ちている。

25

動的計画法(DP)

動的計画法の本質は「同じ計算を2度しない」。重複する部分問題の結果を記憶することで、指数時間を多項式時間に削減する。

26

貪欲法とバックトラック

貪欲法は「今この瞬間の最善手」を選び続ける楽観的戦略。バックトラックは「全ての可能性を試し、失敗したら引き返す」慎重な戦略。

27

文字列アルゴリズム

テキスト検索は最も身近なアルゴリズムの1つ。ブラウザのCtrl+F、grepコマンド、IDEの検索——全てが文字列マッチングに依存している。

05Data Structures

06Computation Theory

36

オートマトンと形式言語

正規表現、コンパイラ、プロトコル検証——オートマトン理論はCSの理論的基盤であり、実務にも深く浸透している。DFA/NFA の等価性、正規言語のポンピング補題、文脈自由文法の構文解析力、そしてチョムスキー階層による言語クラスの体系的分類を理解することで、計算の本質に迫ることができる。

37

計算可能性

「全ての問題がコンピュータで解けるわけではない」——この事実はCS最大の発見の一つであり、停止問題の決定不能性がその象徴である。

38

計算複雑性理論

P ≠ NP 問題はCS最大の未解決問題であり、その答えは暗号、最適化、AI の基盤を根本から変える可能性がある。

39

情報理論

シャノンの情報理論は、データ圧縮の限界と通信の信頼性の限界を数学的に明らかにした。

40

暗号の基礎

現代の暗号はCSの計算複雑性理論に基づいており、「解くのが困難な問題」の存在が安全性を保証する。暗号技術は情報化社会の根幹を支えるインフラであり、通信の秘匿性、データの完全性、そして本人性の検証を可能にする。

41

ラムダ計算と計算モデル

ラムダ計算はチューリングマシンと等価な計算モデルであり、関数型プログラミングの数学的基盤である。3つの構文要素(変数・抽象・適用)だけで、あらゆる計算可能な関数を表現できる。

07Programming Paradigms

08Software Engineering

09Advanced Topics