授業計画 |
| 回数 |
学習目標 |
学習項目 |
| 1 |
開発環境で扱うファイル(バイナリ・実行・設定等)の内部構造を説明出来る。 |
シラバスを解説し、プログラム実行に関わる各種ファイルの依存関係や、実行ファイル(.exe等)の正体を学習する。 |
| 【理解度確認】確認テストを実施 |
| 2 |
変数や配列がメモリ上のアドレスにどう配置され、参照されるかを説明出来る。 |
アドレス空間の概念を学び、メモリのエンディアンやアライメントによる効率の差を学習する。 |
| 【理解度確認】確認テストを実施 |
| 3 |
OSが物理メモリを仮想化し、アプリに提供する仕組みを説明出来る。 |
ページング方式によるアドレス変換や、メモリ不足時のスワップ処理がプログラム速度に与える影響を学習する。 |
| 【理解度確認】確認テストを実施 |
| 4 |
関数呼び出しとローカル変数の保持に不可欠なスタックの構造を説明出来る。 |
LIFO構造による関数の実行管理と、再帰呼び出し時のスタックオーバーフローの原因を学習する。 |
| 【理解度確認】確認テストを実施 |
| 5 |
動的なメモリ確保(new/malloc)が行われるヒープの管理手法を説明出来る。 |
ヒープ領域の特性とメモリリークの発生原因、およびスタックとの使い分けの重要性を学習する。 |
| 【理解度確認】確認テストを実施 |
| 6 |
CPUメモリとGPUメモリ(VRAM)の特性の違いと、データの転送コストを説明出来る。 |
グラフィックス処理における頂点・テクスチャデータの保持と、バスを介したデータ転送がボトルネックとなる理由を学習する。 |
| 【理解度確認】確認テストを実施 |
| 7 |
キャッシュメモリの仕組み(L1/L2キャッシュ)と、データ局所性を意識したコードの優位性を説明出来る。 |
CPUとメモリの速度差を埋めるキャッシュの挙動を知り、連続したメモリへのアクセスがいかに高速かを学習する。 |
| 【理解度確認】確認テストを実施 |
| 8 |
O記法を用い、プログラムの効率性を客観的に評価出来る。 |
ループ回数やデータ量が増えた際の処理時間の増加を予測し、実戦的な「効率の良い書き方」を考える。 |
| 【理解度確認】確認テストを実施 |
| 9 |
複数の探索・整列アルゴリズムの手順と、メモリ使用量の差を説明出来る。 |
二分探索やクイックソートなどの代表的な手法を学び、状況に応じたアルゴリズム選択を学習する。 |
| 【理解度確認】確認テストを実施 |
| 10 |
ソケット通信の概念と、TCP/UDPの使い分けがアプリの挙動に与える影響を説明出来る。 |
ゲーム通信やWeb通信におけるパケットの送受信プロセスと、遅延が発生する仕組みを学ぶ。 |
| 【理解度確認】確認テストを実施 |
| 11 |
プログラマが考慮すべき暗号化方式とデータの保護手法を説明出来る。 |
通信の暗号化やハッシュ化によるパスワード管理など、実装レベルでの安全性の確保を学習する。 |
| 【理解度確認】確認テストを実施 |
| 12 |
バッファオーバーフロー等の脆弱性が、メモリ構造の隙を突いてどう起きるか説明出来る。 |
メモリ上のスタック破壊などの攻撃原理を知り、セキュアなコーディングの必要性を学習する。 |
| 【理解度確認】確認テストを実施 |
| 13 |
エラー発生時にOSやCPUがどう反応し、それをプログラムでどう捕捉するか説明出来る。 |
アクセス違反等の実行時の例外の発生メカニズムと、ダンプファイルを用いた解析の基礎を学習する。 |
| 【理解度確認】確認テストを実施 |
| 14 |
マルチコアCPUを活用するマルチスレッド処理の基礎と、共有資源の衝突を説明出来る。 |
スレッドの概念と排他制御の重要性を学び、効率的な並列演算の考え方を習得する。 |
| 【理解度確認】確認テストを実施 |
| 15 |
定期試験対策 |
授業内容を振り返り、学習内容を定着させる。 |
| 【理解度確認】確認テストを実施 |