1基礎理論とアルゴリズム
- 1.1数値表現と情報理論
コンピュータ内部での2進数・16進数表現と基数変換、負数を表す補数、実数を表す浮動小数点数とそこで生じる誤差(丸め誤差・桁落ち・情報落ち)、そして情報の量を測る情報量と符号化の基礎を学びます。
- 1.2論理とオートマトン
AND/OR/NOT等の論理演算とド・モルガンの法則、それらを物理的に実現する論理回路、プログラミング言語や通信プロトコルの構文を厳密に定義するBNFと文字列パターンを表す正規表現、そして状態遷移でシステムの振る舞いを表す有限オートマトンを学びます。
- 1.3データ構造
プログラムが扱うデータの整理方法である配列・リスト・後入れ先出しのスタック(LIFO)・先入れ先出しのキュー(FIFO)、階層構造を表す木構造(2分木)、高速な検索を実現するハッシュ、そしてネットワークのような関係を表すグラフを学びます。
- 1.4アルゴリズムと計算量
目的のデータを見つける探索(線形探索・2分探索)、データを順序どおりに並べる整列(バブルソート・クイックソート・マージソート)、自分自身を呼び出す再帰、そしてアルゴリズムの効率を入力サイズの関数として表すオーダ記法(O(n)・O(log n)・O(n^2))を学びます。
- 1.5擬似言語とプログラミング
基本情報技術者試験の科目Bで使われるIPA擬似言語の読み方を学びます。手続きの宣言、変数と代入(←)、条件分岐(if / elseif / else / endif)、繰り返し(for / while)、配列の添字の扱い、そしてトレース(コードを1行ずつ手で実行し値の変化を追う手法)の進め方を身につけます。
- 1.6プログラミングパラダイムと言語
処理の手順を記述する手続き型、データと処理をひとまとめにするオブジェクト指向(カプセル化・継承・多相性(ポリモーフィズム))、副作用を避ける関数型という3大パラダイムと、代表的なプログラミング言語(Python/Java/C/R/Go)、そしてデータ交換に使うマークアップ・データ記述形式(HTML/XML/JSON)とAPI・ライブラリの役割を学びます。

