情報科学部Faculty of Computer and Information Sciences
COT311KA-CS-341(計算基盤 / Computing technologies 300)コンパイラCompiler
佐々木 晃Akira SASAKI
授業コードなどClass code etc
学部・研究科Faculty/Graduate school | 情報科学部Faculty of Computer and Information Sciences |
添付ファイル名Attached documents | |
年度Year | 2022 |
授業コードClass code | J0514 |
旧授業コードPrevious Class code | |
旧科目名Previous Class title | |
開講時期Term | 春学期授業/Spring |
曜日・時限Day/Period | 火2/Tue.2 |
科目種別Class Type | |
キャンパスCampus | 小金井 / Koganei |
教室名称Classroom name | 各学部・研究科等の時間割等で確認 |
配当年次Grade | |
単位数Credit(s) | 2 |
備考(履修条件等)Notes | |
他学部公開科目Open Program | |
他学部公開(履修条件等)Open Program (Notes) | |
グローバル・オープン科目Global Open Program | |
成績優秀者の他学部科目履修制度対象Interdepartmental class taking system for Academic Achievers | ○ |
成績優秀者の他学部科目履修(履修条件等)Interdepartmental class taking system for Academic Achievers (Notes) |
(1) 受講希望者 (受講検討中の者も含む) は、情報科学部学部Googleフォーム(https://forms.gle/ECvwxVe2NcxmrbTK9)で初回講義前までに希望申請をしてください。(※以下URLのご案内があるGoogleフォームとは異なるのでご注意ください。) (2) 以下のURLと教育開発支援機構事務局の案内に従って、履修希望の申請を行ってください。 https://www.hoseikyoiku.jp/risyu/index.html (3) 履修取消については、ご自身の所属学部の履修取消期間内に必ず同時に履修削除を行ってください。 |
実務経験のある教員による授業科目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 | |
選択・必修Optional/Compulsory | |
カテゴリー(2022年度以降入学者)Category (2022~) | |
カテゴリー(2021年度以前入学者)Category (~2021) | |
カテゴリーCategory |
専門教育科目 専門科目 |
すべて開くShow all
すべて閉じるHide All
Outline (in English)
・In this course, students will learn compilers and compilation process.
・At the end of the course students will understand the overall structure of a compiler as a system through realizing a simple language,
・Before each class meeting, students will be expected to solve exercises assigned as homework.
・Grading will be decided based on mid- and term-examinations (60%), reports (30%), and in-class contribution(10%)
授業で使用する言語Default language used in class
日本語 / Japanese
授業の概要と目的(何を学ぶか)Outline and objectives
コンパイラをはじめとする計算機言語処理系は、情報科学の分野でもっとも重要なソフトウェアの一つである。本講義では、コンパイラの基本概念について説明するとともに、コンパイラの各構成要素における理論と技法について説明する。また、簡単な言語に対するコンパイラの実現を例題として、コンパイラの全体像の理解を深める。
到達目標Goal
(1)コンパイラの基本概念を説明できる。
(2)与えられた字句定義および構文定義から、対応するプログラミング言語の構文を説明できる。
(3)字句、構文定義からそれぞれ字句解析および構文解析プログラムを作成できる。
(4)プログラムの構文要素に対するコードの生成方法が理解できる。
(5)簡単な言語に対するコンパイラを実現できる。
この授業を履修することで学部等のディプロマポリシーに示されたどの能力を習得することができるか(該当授業科目と学位授与方針に明示された学習成果との関連)Which item of the diploma policy will be obtained by taking this class?
ディプロマポリシーのうち「DP2」と「DP4-1」に関連
授業で使用する言語Default language used in class
日本語 / Japanese
授業の進め方と方法Method(s)(学期の途中で変更になる場合には、別途提示します。 /If the Method(s) is changed, we will announce the details of any changes. )
コンパイル処理は、いくつかのフェーズ(Phase)と呼ばれるプロセスで構成される。各フェーズの実装方法は、オートマトンをはじめとする言語の理論によって裏付けられている。講義前半(第1~9回)では、各フェーズに対して、(1)フェーズを裏付ける理論の学習、(2)理論に対するプロセスの実装方法(アルゴリズム)の学習、というステップで理解を深めていく。講義後半では、前半で学んだそれぞれのフェーズを統合することで、一つのコンパイラを構成できることを学ぶ。
課題等の提出・フィードバックは「CIS moodle」を通じて行う予定である。
アクティブラーニング(グループディスカッション、ディベート等)の実施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]:字句解析
正規表現とオートマトンによる字句解析の定式化
4[対面/face to face]:字句解析器の実装
字句解析プログラムの導出
5[対面/face to face]:構文解析
下向き構文解析
6[対面/face to face]:構文解析器の実装
再帰降下構文解析器の導出
7[対面/face to face]:意味解析
名前の解決処理、型、静的意味検査
8[対面/face to face]:中間コード生成
中間コードの種類と生成の基礎
9[対面/face to face]:実行時環境
実行時記憶、活性レコード(関数フレーム)、手続き呼び出しのプロセス
10[対面/face to face]:通訳系(インタプリタ)
VM(Virtual Machine)
11[対面/face to face]:コンパイラの実装(1)
式のコンパイル
12[対面/face to face]:コンパイラの実装(2)
変数機能の実現
13[対面/face to face]:コンパイラの実装(3)
制御構造のコンパイルと関数機能の実現
14[対面/face to face]:まとめ
総括
授業時間外の学習(準備学習・復習・宿題等)Work to be done outside of class (preparation, etc.)
各回では配布する資料を読み授業に備える。また、資料内の例題プログラムは事前に入力し実行すること。授業後は、課題のプログラミングおよびレポート作成に取り組む。本授業の準備・復習等の授業時間外学習は、各週につき4時間を標準とします。
テキスト(教科書)Textbooks
担当教員が作成したオンラインテキストおよび配布する印刷物
参考書References
中田育男、コンパイラの構成と最適化、(2版、2009)、朝倉書店
佐々政孝、プログラミング言語処理系、(1989)、岩波書店
成績評価の方法と基準Grading criteria
試験(60%), レポート課題(30%), 講義における積極性などの参加度(10%)を総合して評価する。
学生の意見等からの気づきChanges following student comments
レポート問題の解説時間を多めにとる
学生が準備すべき機器他Equipment student needs to prepare
貸与ノートPC, ネットワーク接続、学習支援システム利用