Cornell CS 6120: Advanced Compilers Self-Guided Course
Cornell University は、プログラミング言語実装に関する PhD レベルのコース CS 6120: Advanced Compilers を、自己学習型オンラインカリキュラムとして提供しています。Adrian Sampson が教えるこのコースは、独学者が汎用コンパイラのトピックと研究指向の実装技術をマスターするための包括的な道筋を提供します。
コース概要と学習目標
CS 6120 は、プログラミング言語の実装を教えることを目的とし、基礎的なコンパイラ理論と高度な研究トピックの両方に焦点を当てています。カリキュラムは、ビデオ講義、書面ノート、学術論文を組み合わせた線形タイムライン形式のレッスンで構成されています。
コアコンパイラトピック
コースはコンパイラ構築の「古典的」な柱をカバーします:
- 中間表現 (IR): プログラムが解析や最適化のために内部でどのように表現されるか。
- データフロー解析: プログラム中のデータの値や状態を追跡する手法。
- グローバルおよびローカル解析: 基本ブロックレベルと関数レベルの両方でコードを最適化する方法。
- 静的単一代入 (SSA): 多くのコンパイラ最適化を簡素化する重要な形式。
- ループ最適化: 実行ループの効率を向上させる戦略。
- 手続き間解析: 関数境界を越えてプログラムの振る舞いを解析する。
- エイリアス解析: 異なるポインタが同じメモリ位置を指すかどうかを判定する。
高度・研究指向トピック
標準的な最適化を超えて、コースは最新のランタイムと実行環境にも踏み込みます:
- ジャストインタイム (JIT) コンパイル: 動的コンパイラの仕組みと投機的トレース。
- メモリ管理: ガベージコレクション (GC) と動的型付け言語の実装に関する深掘り。
- 並行性と並列性: コンパイラがマルチスレッド実行やスーパーワードレベル並列性をどのように扱うか。
- 高速コンパイラ: コンパイラ自体の実行時間を短縮する技術。
実装とツール
学習は「オープンソースハッキングタスク」に基づいており、抽象概念を実際のコードに落とし込むことを目的としています。実装タスクには主に次の 2 つのツールが使用されます:
- LLVM: 業界標準のコンパイラ基盤。
- Bril: 本コース専用に考案された教育用中間表現で、学習プロセスをシンプルにします。
カリキュラム構成
自己学習版は大学版と同等の学術的厳密さを保ちつつ、形式的な制約を取り除いています。締め切りはなく、オープンエンドな実装タスクを完了させることで理解を深めることが奨励されています。
レッスン一覧
| Lesson | Topic | Key Focus Areas |
|---|---|---|
| 1 | Welcome & Overview | Introduction to empirical evaluation and correctness |
| 2 | Representing Programs | Introduction to Bril and program representation |
| 3 | Local Analysis & Optimization | Dead code elimination and local value numbering |
| 4 | Data Flow | Data flow analysis and implementation tasks |
| 5 | Global Analysis | Global optimization and path profiling |
| 6 | Static Single Assignment | SSA form and peephole optimizations |
| 7 | LLVM | Writing LLVM passes |
| 8 | Loop Optimization | Improving loop efficiency |
| 9 | Interprocedural Analysis | Type-based alias analysis |
| 10 | Alias Analysis | Alias analysis and garbage collection theory |
| 11 | Memory Management | GC implementation and JIT type specialization |
| 12 | Dynamic Compilers | Tracing, speculation, and superoptimizers |
| 13 | Concurrency & Parallelism | Threading, parallelism, and formal verification |
| 14 | Fast Compilers | Optimizing the compiler's own performance |
大学版は正式なコースプロジェクトで締めくくられますが、自己学習版は学習者が実際のコンパイラプロジェクトに知識を応用することを奨励しています。