理工学部Faculty of Science and Engineering
COT300XE(計算基盤 / Computing technologies 300)コンパイラ演習コンパイラ演習
和佐 州洋Kunihiro WASA
授業コードなどClass code etc
学部・研究科Faculty/Graduate school | 理工学部Faculty of Science and Engineering |
添付ファイル名Attached documents | |
年度Year | 2023 |
授業コードClass code | H6050 |
旧授業コードPrevious Class code | |
旧科目名Previous Class title | |
開講時期Term | 春学期授業/Spring |
曜日・時限Day/Period | 水5/Wed.5 |
科目種別Class Type | |
キャンパスCampus | 小金井 |
教室名称Classroom name | 小南館‐AL教室2 |
配当年次Grade | 3年 |
単位数Credit(s) | |
備考(履修条件等)Notes | |
他学部公開科目Open Program | |
他学部公開(履修条件等)Open Program (Notes) | |
グローバル・オープン科目Global Open Program | |
成績優秀者の他学部科目履修制度対象Interdepartmental class taking system for Academic Achievers | |
成績優秀者の他学部科目履修(履修条件等)Interdepartmental class taking system for Academic Achievers (Notes) | |
実務経験のある教員による授業科目Class taught by instructors with practical experience | |
SDGsCPSDGs CP | |
アーバンデザインCPUrban Design CP | |
ダイバーシティCPDiversity CP | |
未来教室CPLearning for the Future CP | |
カーボンニュートラルCPCarbon Neutral CP | |
千代田コンソ単位互換提供(他大学向け)Chiyoda Campus Consortium | |
カテゴリー<理工学部>Category |
応用情報工学科 学科専門科目 |
すべて開くShow all
すべて閉じるHide All
Outline (in English)
This course introduces students to the design of compilers for programming languages. In particular, students will learn how to implement each component of compilers for a variant of PL/0 as an example.
By the end of this course, students should be able to do the following:
(1) Students can implement a compiler for a simple computer language.
(2) Students can implement a lexical analyzer.
(3) Students can implement a syntax analyzer.
(4) Students can implement a code generator.
Before/after each class meeting, students will be expected to spend four hours to understand the course content.
Your overall grade in the class will be decided based on the following
A compiler built in the course: 60%, Term-end report: 40%.
授業で使用する言語Default language used in class
日本語 / Japanese
授業の概要と目的(何を学ぶか)Outline and objectives
コンパイラは,コンピュータを利用する上で必要不可欠なソフトウェアのひとつであり,計算機科学におけるさまざまな知識が盛り込まれている.本講義では,比較的単純な言語に対するコンパイラを実際に作成することで,コンパイラの各構成要素を理解することを目的とする.
到達目標Goal
(1) コンパイラを全体を構成できること.
(2) 字句解析プログラムを実装できること.
(3) 構文解析プログラムを実装できること.
(4) コード生成とそれを実行できるプログラムを実装できること.
授業で使用する言語Default language used in class
日本語 / Japanese
授業の進め方と方法Method(s)(学期の途中で変更になる場合には、別途提示します。 /If the Method(s) is changed, we will announce the details of any changes. )
本講義では,「何も行わないプログラムをコンパイルするコンパイラ」から始め,徐々に機能を増やすことで複雑なプログラムをコンパイルできるコンパイラの完成を目指す.特に,「コンパイラ」において学んだ理論的背景を元にして実装する.課題等に対するフィードバックは学習支援システムまたは授業等を通じて行う.
アクティブラーニング(グループディスカッション、ディベート等)の実施Active learning in class (Group discussion, Debate.etc.)
なし / No
フィールドワーク(学外での実習等)の実施Fieldwork in class
なし / No
授業計画Schedule
授業形態/methods of teaching:対面/face to face
※各回の授業形態は予定です。教員の指示に従ってください。
第1回[対面/face to face]:導入
開発環境の設定
第2回[対面/face to face]:簡単なコンパイラの作成
加減算のできるコンパイラ
第3回[対面/face to face]:ステップ1
何もしないコンパイラの作成
第4回[対面/face to face]:ステップ2
出力命令を含んだプログラムをコンパイルできるコンパイラの作成
第5回[対面/face to face]:ステップ3
算術演算を含んだプログラムをコンパイルできるコンパイラの作成
第6回[対面/face to face]:ステップ4
プロック構造を含んだプログラムをコンパイルできるコンパイラの作成
第7回[対面/face to face]:前半のまとめ
前半に作成したプログラムの動作を見直す
第8回[対面/face to face]:ステップ5
if 文を含んだプログラムをコンパイルできるコンパイラの作成
第9回[対面/face to face]:ステップ6
定数を含んだプログラムをコンパイルできるコンパイラの作成
第10回[対面/face to face]:ステップ7
変数を含んだプログラムをコンパイルできるコンパイラの作成
第11回[対面/face to face]:ステップ8
while 文を含んだプログラムをコンパイルできるコンパイラの作成
第12回[対面/face to face]:ステップ9
関数を含んだプログラムをコンパイルできるコンパイラの作成
第13回[対面/face to face]:動作確認
完成したコンパイラの動作を確認する
第14回[対面/face to face]:まとめ
演習のまとめ
授業時間外の学習(準備学習・復習・宿題等)Work to be done outside of class (preparation, etc.)
本授業の準備・復習等の授業時間外学習は,各週につき4時間を標準とする.授業開始に先立ちC++ に関して復習しておくこと.
テキスト(教科書)Textbooks
特に指定しない.教員が作成した資料を利用する.
参考書References
中田育男,コンパイラ 作りながら学ぶ,オーム社,2017.
湯淺 太一,コンパイラ,オーム社,2014.
成績評価の方法と基準Grading criteria
作成したコンパイラ(60%)とそれに関わるレポート(40%)により評価する.到達目標に対して,60%以上の点数を獲得した学生が合格となる.
学生の意見等からの気づきChanges following student comments
昨年度の実施形態は概ね学生から好評だったが,初回・2回目に関しては難易度が高かったため,この点に配慮して演習を行う.
学生が準備すべき機器他Equipment student needs to prepare
貸与ノートPCの持参
その他の重要事項Others
コンパイラに関する理論の講義「コンパイラ」も同時に履修することを推奨する.