情報科学研究科Graduate School of Computer and Information Sciences
COT500K1(計算基盤 / Computing technologies 500)プログラミング言語処理系特論Advanced Programming Language Processors
佐々木 晃Akira SASAKI
授業コードなどClass code etc
学部・研究科Faculty/Graduate school | 情報科学研究科Graduate School of Computer and Information Sciences |
添付ファイル名Attached documents | |
年度Year | 2022 |
授業コードClass code | TZ001 |
旧授業コードPrevious Class code | |
旧科目名Previous Class title | |
開講時期Term | 春学期授業/Spring |
曜日・時限Day/Period | 月4/Mon.4 |
科目種別Class Type | |
キャンパスCampus | 小金井 |
教室名称Classroom name | 各学部・研究科等の時間割等で確認 |
配当年次Grade | |
単位数Credit(s) | 2 |
備考(履修条件等)Notes | |
実務経験のある教員による授業科目Class taught by instructors with practical experience | |
カテゴリーCategory |
すべて開くShow all
すべて閉じるHide All
Outline (in English)
・Students will learn organization and structure of compilers and advanced technologies for realizing optimizing compilers. Students also learn state-of-the-art theories and technologies in this field.
・At the end of the course students will understand overall structure of a compiler as a system and acquire advanced knowledge on compiler and language processors.
・Before each class meeting, students will be expected to solve exercises assigned as homework and to prepare your presentation.
・Grading will be decided based on in-class contribution(30%) and reports (70%)
授業で使用する言語Default language used in class
日本語 / Japanese
授業の概要と目的(何を学ぶか)Outline and objectives
本講義では、コンパイラをはじめとする言語処理系の理論、構成法、実装技術について学ぶ。さらに、最近の論文などを通して、この分野での新しいトピックについて議論する。
到達目標Goal
コンパイラでは特に、コード最適化、レジスタ割付、機械語コード生成といったコンパイラバックエンドついて理解を深めることを目指す。さらに論文講読を通じて当該分野に関する幅広い知識を得る。
この授業を履修することで学部等のディプロマポリシーに示されたどの能力を習得することができるか(該当授業科目と学位授与方針に明示された学習成果との関連)Which item of the diploma policy will be obtained by taking this class?
ディプロマポリシーのうち、「DP1」と「DP2」に関連
授業で使用する言語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.)
あり / Yes
フィールドワーク(学外での実習等)の実施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]:コード最適化(概要)
コード最適化の概要およびデータフロー解析の基礎
6[対面/face to face]:コード最適化(詳細)
代表的なデータフロー解析とコントロールフロー解析
7[対面/face to face]:コード最適化(最適化変換1)
基本的な最適化変換、不要コード除去
8[対面/face to face]:コード最適化(最適化変換2)
効果的な最適化変換、ループ最適化
9[対面/face to face]:まとめ(コンパイラバックエンド)
コンパイラバックエンドの全体像
10[対面/face to face]:文献紹介(1)
メタプログラミング
11[対面/face to face]:文献紹介(2)
ライブラリとフレームワーク
12[対面/face to face]:文献紹介(3)
関数型言語
13[対面/face to face]:文献紹介(4)
論理型言語
14[対面/face to face]:まとめ
総括
授業時間外の学習(準備学習・復習・宿題等)Work to be done outside of class (preparation, etc.)
文献紹介の準備、小課題の取り組み(プログラミングとレポート作成)。本授業の準備・復習等の授業時間外学習は、各週につき4時間を標準とします。
テキスト(教科書)Textbooks
配布資料
参考書References
・中田育男、コンパイラの構成と最適化(2版)、朝倉書店
・佐々政孝、プログラミング言語処理系、岩波書店
・Ahoほか、Compilers: Principles, Techniques, and Tools
・最近の学会論文
成績評価の方法と基準Grading criteria
授業への貢献度(30%)、期間内に行うレポート(70%)
学生の意見等からの気づきChanges following student comments
メンバー間での活発な討議を促進する。
学生が準備すべき機器他Equipment student needs to prepare
ネットワーク使用あり。オンライン教材を用いることがあるので、コンピュータ持参のこと。