コンピュータサイエンスを、 ビジュアルで学ぶ
アニメーションを見てから、パネルを操作し、問題を解く。
情報の表現
ビットと2進数
ビットをON/OFFして1バイトを組み立て、数がどう変わるかを学習します。
基数変換
ビットをまとめて、2進・8進・10進・16進を行き来します。
負の数と2の補数
ビット反転と1の加算から負の整数を作ります。
限られたビットで小数を保存する
等間隔の簡略モデルを使い、小数が丸められる理由を確認します。
ビット単位の論理演算
AND・OR・XOR・NOTを1列ずつ計算します。
文字コード
文字からUnicodeコードポイント、UTF-8バイト列までを追跡します。
画像のデジタル化
画素・解像度・色深度・データ量を関連づけます。
音のデジタル化
正弦波を一定間隔で測定し、振幅を量子化します。
圧縮
連続するデータを短いランレングス命令へ置き換えます。

歴史をたどってしくみを学ぶ コンピュータ入門
アルゴリズム
アルゴリズムの表現
同じ手順を自然言語・流れ図・疑似言語の3つの形で見比べます。
線形探索
配列を先頭から1つずつ比較し、目標値を探します。
二分探索
並び替え済みの配列で、探索範囲を半分ずつ絞り込みます。
計算量
入力サイズnに対する処理回数の増え方を、4つの計算量で見比べます。
バブルソート
隣り合う値を比較・交換しながら、配列を並べ替えます。
マージソート
整列済みの部分列を2つずつ統合し、配列を並べ替えます。
再帰
factorial(4)を例に、呼び出しスタックの積み上がりと巻き戻りを確かめます。
貪欲法
硬貨の支払いを例に、貪欲法の選び方と最適な選び方を見比べます。
動的計画法
硬貨の最小枚数問題を例に、表を埋めながら最適な答えを求めます。

アルゴリズム図鑑 増補改訂版 絵で見てわかる33のアルゴリズム
プログラミングとメモリ
変数と型
型によって変数の使うバイト数が変わり、後ろの変数のアドレスに影響する様子を確かめます。
条件分岐
条件式の結果によって、実行される分岐が切り替わる様子を確かめます。
反復処理
forループを1回ずつ進め、配列が埋まっていく様子を確かめます。
関数とスコープ
main()がadd()を呼び出す例で、フレームとローカル変数の見え方を確かめます。
配列と文字列
文字列HELLOを例に、添字とメモリ上の位置の関係を確かめます。
ポインタ
ポインタpの指す先をxとyの間で切り替え、*pの値の変化を確かめます。
動的メモリ
malloc・freeを繰り返し、ヒープの状態が変化する様子を確かめます。
メモリエラー
バッファオーバーフロー・ダングリングポインタ・メモリリークを見比べます。
デバッグ
5行の短いプログラムを1行ずつ実行し、変数の変化を確かめます。

プログラムはなぜ動くのか 第3版 知っておきたいプログラミングの基礎知識
データ構造
配列
挿入する位置を変え、動かす要素の数がどう変わるか確かめます。
連結リスト
10→20→30→40という連結リストに新しいノードを挿入し、他のノードが動かないことを確かめます。
スタック
push・popを繰り返し、最後に入れた値から取り出される様子を確かめます。
キュー
enqueue・dequeueを繰り返し、最初に入れた値から取り出される様子を確かめます。
ハッシュテーブル
挿入するキーを変えながら、ハッシュ値の計算とバケットへの格納、そして衝突が起きる様子を確かめます。
木構造
探索する値を変えながら、根から大小比較を繰り返して経路をたどる様子を確かめます。
グラフ
幅優先探索と深さ優先探索を切り替えながら、同じグラフでも訪問順が変わる様子を確かめます。
構造の選択
操作の要件を切り替えながら、それぞれに向いているデータ構造を確かめます。

アルゴリズム ビジュアル大事典 ~図解でよくわかるアルゴリズムとデータ構造~
データベース
表と関係モデル
選択する行を切り替えながら、それぞれの行のデータと主キーの値を確かめます。
ERモデル
ステップを進めながら、エンティティが属性を持ち、表に変換される過程を確かめます。
SQL検索
ステップを進めながら、SQLの各句が結果集合をどう絞り込んでいくかを確かめます。
結合
ステップを進めながら、enrollments表の各行がstudents表のどの行と対応するかを確かめます。
正規化
ステップを進めながら、未正規化の表で更新異常が起きる様子と、表を分解して解消する様子を確かめます。
インデックス
検索するidを変えながら、全件走査と索引探索の比較回数を見比べます。
トランザクション
コミットで終えるかロールバックで終えるかを切り替えながら、口座Aと口座Bの残高がどう変化するかを確かめます。
同時実行制御
ロックなしとロックありを切り替えながら、更新競合が起きる様子と、ロックで防げる様子を確かめます。

おうちで学べるデータベースのきほん 第2版
ネットワークとWeb
ネットワーク階層
ステップを進めながら、データに各層のヘッダが順に付け加えられる様子を確かめます。
IPアドレス
プレフィックス長を変えながら、ネットワークアドレス・ブロードキャストアドレス・使用可能なホスト数がどう変わるかを確かめます。
ルーティング
ステップを進めながら、パケットがルータを1つずつ経由し、各ルータが次のホップを決める様子を確かめます。
TCPとUDP
TCPとUDPを切り替えながら、パケットが失われたときの挙動の違いを確かめます。
DNS
ステップを進めながら、ResolverがRoot・TLD・Authoritativeサーバへと問い合わせを重ねていく経路を確かめます。
HTTP
リクエストとレスポンスを切り替えながら、それぞれがどんな行から構成されているかを確かめます。
Webアプリ
ステップを進めながら、ブラウザ・サーバ・DBの間でリクエストとレスポンスが往復する様子を確かめます。
API
リクエストの結果を切り替えながら、ステータスコードとJSON本文がどう変わるかを確かめます。

ネットワークはなぜつながるのか 第2版
情報セキュリティ
セキュリティの目的
攻撃のシナリオを切り替えながら、機密性・完全性・可用性のどれが影響を受けるかを確かめます。
共通鍵暗号
鍵の値を変えながら暗号文がどう変わるか、また正しい鍵と違う鍵で復号した結果の違いを確かめます。
公開鍵暗号
ステップを進めながら、公開鍵で暗号化されたメッセージが秘密鍵を持つ本人にだけ届く様子を確かめます。
ハッシュと署名
メッセージを改ざんするかどうかを切り替えながら、ダイジェストがどう変わり、署名の検証結果がどう変わるかを確かめます。
認証
ステップを進めながら、パスワード確認からMFA、セッション発行までの認証の流れを確かめます。
TLS
ステップを進めながら、証明書の検証から鍵交換、暗号化通信の開始までの流れを確かめます。
Webの脆弱性
攻撃の種類を切り替えながら、入力例・対策なしの場合の挙動・対策を見比べます。
リスク管理
組み合わせを切り替えながら、脅威・脆弱性・対策がどう対応しているかを確かめます。
