コンピュータサイエンスコース

なぜそのコードが速いのかを、説明できるようにする。

動くコードは書けても、なぜ速いのか説明できない。 その足元を、2進数から計算量、OS、ネットワークまで順に埋めます。

全4コース248レッスン(約62時間)

足元から、順番に埋めていく

理論編で土台をつくり、アルゴリズムとOS・ネットワークへ。 最後は面接で問われる水準の実装力まで引き上げます。

STEP 1土台になる理論を押さえる

コンピューターサイエンス入門:理論編
学習有料プラン

理論編

2進数から計算量までの土台

2進数、論理演算、ビット演算、データ構造、計算量、メモリモデル。 コードの速さや設計判断の根拠が分かるようになります。

53レッスン
始める

STEP 2OS・ネットワーク・DBまで広げる

コンピューターサイエンス:アルゴリズム / OS / ネットワーク / DB
学習有料プラン

システム編

OS・ネットワーク・DBを知る

ソート、探索、再帰に加えて、プロセスとメモリ、TCP/IP、HTTP、DNS、データベース。 技術選定の議論に入れる程度の土台をつくります。

135レッスン
始める

STEP 3面接で問われる水準まで上げる

コンピューターサイエンス上級:アルゴリズムとデータ構造
学習有料プラン

アルゴリズム編

面接の実装問題を構造的に解く

探索、ソート、木、グラフ、動的計画法、貪欲法。 コーディング面接の実装問題を、構造的に解けるようにします。

50レッスン
始める

言語を問わず、考え方だけを試す

Python・JavaScript・TypeScript・Javaのどれで解いても構いません。 問われるのは書き方ではなく、解き方です。

チャレンジしてみよう!

アルゴリズム道場 カメ師範の十の巻
道場有料プラン

道場編

カメ師範「十の巻、開いてみるか」

総和と最大から、線形探索、整列、二分探索、再帰、スタックとキューへ。 最後は初見の疑似コードを読み解いて実装します。

10レッスン
道場に挑む

スライドで復習する

手を動かす前に、図解でざっと思い出せます

コンピューターサイエンス入門:理論編

0 と 1 の列を数として読む

並んでいるのは 0 と 1 だけですが、桁ごとに決まった重みがあります。ON になっている桁の重みを足し合わせた数が、そのまま10進数の値です。

手で足しても同じ数になることを、次の図解で確かめます。

文字列で持っている2進数は、parseInt の第2引数に 2 を渡すと10進数になります。

parseInt("10101010", 2); // 170

1 / 4

コンピューターサイエンス入門:理論編

重みを足して読む

スライダーを動かして、色が付いた桁の重みだけが足し算に並ぶのを見てください。

  • 重みは右端の 1 から倍々に増えて、左端が 128。8桁すべてが 1 なら合計は 255 になる
  • 式に出てくるのは色が付いた桁だけで、0 の桁は足し算に一切現れない
  • 255 に合わせて +1 を入れると、繰り上がった9桁目が枠の外へ消えて 0 に戻る
2進数と10進数

2 / 4

考えてみよう外しても進めます

2進数 11010000 は10進数でいくつでしょうか。

選ぶと、この枚の中で答えと理由を確かめられます。

3 / 4

コンピューターサイエンス入門:理論編

読み替えの早見表

よく出てくる並びを覚えておくと、途中の足し算を省けます。8桁ちょうどで区切られている値は、境目として頭に入れておくと便利です。

8桁で表せるのは 0 から 255 まで。これを越える値には9桁目が要ります。

2進数10進数
000000011
0000111115
0001000016
10000000128
11111111255

4 / 4

2進数から10進数への変換

4

コンピューターサイエンス入門:理論編

2 で割り続けて余りを積む

10進数を 2 で割り、出てきた余りを下の桁から積み上げると2進数になります。割り算を止めるのは、商が 0 になったときです。

余りの列がどう桁に対応するのかを、次の図解で逆から確かめます。

JavaScript は toString(2) で一発ですが、中でやっているのは 2 で割り続ける手続きです。

(13).toString(2); // "1101"

1 / 4

コンピューターサイエンス入門:理論編

作りたい数から桁を決める

作りたい10進数にスライダーを合わせて、どの桁が ON になったかを逆から読んでください。

  • 128 より小さい数では左端が 0 のまま。上の桁から「入るか入らないか」で決まっていく
  • 偶数のあいだ右端は 0。右端の桁は 2 で割った余りそのものになっている
  • 1 ずつ上げると右端から順に繰り上がる。2 で割り続ける手順を逆再生した形になる
2進数と10進数

2 / 4

考えてみよう外しても進めます

10進数 100 を8桁の2進数で書くとどれでしょうか。

選ぶと、この枚の中で答えと理由を確かめられます。

3 / 4

割り算の跡をたどる

商が 0 になるまで割り、余りを下から読み上げます。ループを回した記録をそのまま並べると、桁の順番が逆さまに出てくる理由が見えます。

let n = 100;
const digits = [];
while (n > 0) {
digits.unshift(n % 2);
n % 2下の桁から出る余り
n = Math.floor(n / 2);
Math.floor(n / 2)次の桁へ進む
}

割り算の記録

n余り
100500
50250
25121
1260
630
311
101

余りを下から読むと 1100100

unshift で先頭に積んでいるのは、あとから出た余りほど上の桁だからです。

4 / 4

10進数から2進数への変換

4

コンピューターサイエンス入門:理論編

設定を1つの整数に押し込める

真偽値をいくつも並べる代わりに、1つの整数の各桁へ設定を押し込められます。ある機能が有効かどうかを調べるのが AND の役目です。

この & がビット列に何をしているのかを、次の図解で8桁ぶん並べて見ます。

perm & WRITE が 0 かどうかだけを見ます。0 以外なら、その桁は立っています。

const READ = 1, WRITE = 2, EXEC = 4; const perm = 5; if (perm & WRITE) { /* 書き込める */ }

1 / 4

コンピューターサイエンス入門:理論編

AND で桁を取り出す

AND を選んだままマスクのスライダーを動かして、一番下の行に何が残るかを見てください。

  • 残るのはマスクが 1 の桁だけ。x が 1 でも、マスクが 0 の桁は必ず落ちる
  • マスクを 0 まで下げると結果は 0、逆に 255 まで上げると x がそのまま出てくる
  • マスクを 8 や 16 のような1桁だけの値にすると、その桁が立っているかの判定になる
ビットマスクで見る・立てる・反転する

2 / 4

考えてみよう外しても進めます

図の x は 106 です。106 & 16 の結果はいくつでしょうか。

選ぶと、この枚の中で答えと理由を確かめられます。

3 / 4

コンピューターサイエンス入門:理論編

AND の使いどころ

AND は「見る」と「削る」に効く演算です。判定に使うときは、結果が 0 以外かどうかだけを見ます。

桁を立てる側の操作は、次のレッスンの OR と XOR で扱います。

やりたいこと書き方
特定の桁が立っているか調べるperm & FLAG が 0 以外か
下位4桁だけ取り出すvalue & 15
特定の桁を落とすperm & ~FLAG
偶数か奇数かを見るn & 1

4 / 4

ビットAND演算でフラグ判定

4
このコースのスライドをすべて見る

この知識が出る資格

ここで学ぶ内容は、次の試験でも問われます

あわせて学びたい

同時に進めると、理解が早くなる組み合わせです

人気のコース

いま多くの方が取り組んでいるコースです

エンジニアキャリアの歩き方

エンジニアキャリアの歩き方

フロントエンド、バックエンド、フルスタック、インフラ、AI/ML などエンジニアの主要キャリアパスと、各分野で求められるスキルセットや年収レンジを学べる無料コースです。これからエンジニア転職を考えている方や、自分の方向性を整理したい現役エンジニアを対象としています。約 5 時間 (1 日 30 分 × 10 日) で 30 レッスンを修了でき、修了後は自分に合った進路を見極めて学習計画を立てられるようになります。

30レッスン
プログラミング学習のはじめ方

プログラミング学習のはじめ方

プログラミング学習の進め方、言語の選び方、環境構築、つまずきやすいポイントの乗り越え方を、最短ルートで整理した無料の導入コースです。これから学習を始めたい完全初学者や、独学が続かず行き詰まっている方を対象としています。約 1 時間 (1 日 30 分 × 2 日) で 5 レッスンを修了でき、修了後は迷わず自分に合った学習ロードマップを描いて走り出せるようになります。

5レッスン
はじめての生成AI

はじめての生成AI

ChatGPT、Claude、Gemini など主要な生成 AI の仕組みと使い分け、ハルシネーション対策、業務活用シナリオを手を動かして学べる無料コースです。AI 初学者や、業務効率化を進めたいビジネスパーソンを対象に、技術背景がなくても進められる構成です。約 19 時間 (1 日 30 分 × 38 日) で 76 レッスンを修了でき、修了後は AI を使った業務自動化や情報整理を自分で設計できるようになります。

76レッスン
AIへの指示の出し方:プロンプト入門

AIへの指示の出し方:プロンプト入門

Chain of Thought、Few-shot、ロール指示、構造化出力、制約条件の設計など、生成 AI から狙った成果を引き出すプロンプト技法を体系的に学べるコースです。ChatGPT や Claude を業務で活用したいビジネスパーソンや AI エンジニアを対象としています。約 7 時間 (1 日 30 分 × 14 日) で 26 レッスンを修了でき、修了後は要件定義から評価まで再現性のあるプロンプトを自分で組めるようになります。

26レッスン

次に進むコース