シラバス参照

講義概要/Course Information
2024/06/20 現在

科目基礎情報/General Information
授業科目名
/Course title (Japanese)
言語処理系論
英文授業科目名
/Course title (English)
Compiler
科目番号
/Code
COM504c COM504d
開講年度
/Academic year
2024年度 開講年次
/Year offered
3
開講学期
/Semester(s) offered
前学期 開講コース・課程
/Faculty offering the course
情報理工学域
授業の方法
/Teaching method
講義 単位数
/Credits
2
科目区分
/Category
専門科目
開講類・専攻
/Cluster/Department
Ⅰ類
担当教員名
/Lecturer(s)
佐藤 重幸
居室
/Office
西2-512
公開E-mail
/e-mail
iopl-2024-group@gl.cc.uec.ac.jp
授業関連Webページ
/Course website
Google Classroom
更新日
/Last update
2024/06/06 15:35:49 更新状況
/Update status
公開中
/now open to public
講義情報/Course Description
主題および
達成目標(2,000文字以内)
/Themes and goals(up to 2,000 letters)
プログラミング言語処理系の基礎概念と,その実装例を学ぶ.
これにより,

* 言語処理系の仕組みに対する理解
* 言語処理系の仕組みを意識したプログラミング

の獲得を目指す.
前もって履修
しておくべき科目(1,000文字以内)
/Prerequisites(up to 1,000 letters)
特定の科目の履修を前提にすることはないが,

* 基本的なプログラミング(例えば「プログラミング通論」相当)
* 計算機の基本的な仕組み(例えば「計算機通論」相当)

についての知識は前提とする.
前もって履修しておくこ
とが望ましい科目(1,000文字以内)
/Recommended prerequisites and preparation(up to 1,000 letters)
本科目の理解の助けになるであろう科目や経験は次の通り:

* 形式言語を扱う科目(例えば「形式言語理論」)
* 集合論と記号論理を扱う科目(例えば「離散数学」)
* Pythonを扱った経験
* 関数型の言語機能(ラムダ式やパターンマッチ)を使った経験
教科書等(1,000文字以内)
/Course textbooks and materials(up to 1,000 letters)
授業教材はオンライン資料として配布する.
その中に,参考資料を適宜記載する.
授業内容と
その進め方(2,000文字以内)
/Course outline and weekly schedule(up to 2,000 letters)
授業内容:

1. ガイダンス,イントロダクション
2. コンパイラとインタプリタ
3. 構文と意味論
4. 字句解析と構文解析
5. 意味解析と型検査
6. 抽象機械とアセンブリ
7. コンパイラ最適化
8. 翻訳と評価
9. コンパイラとインタプリタ(再訪):二村射影
10. 関数呼出しと反復
11. 高階関数とクロージャ
12. ライブラリと言語:EDSL
13. JITコンパイラ
14. コンパイラとインタプリタ(再々訪):Truffle/Graal
15. まとめ

進め方:

* 12回以降は発展的内容なので,授業進度に合わせて内容を取捨選択をする.
* 各回にコメントフィードバックを求め,次回で適宜取り上げる.
実務経験を活かした
授業内容
(実務経験内容も含む)
/Course content utilizing practical experience
授業時間外の学習
(予習・復習等)(1,000文字以内)
/Preparation and review outside class(up to 1,000 letters)
* 各回のコメントフィードバック,及びそれに係る復習・自習
* 期末試験,及びそれに係る復習
* レポート課題,及びそれに係る自習(プログラミングを含む)
成績評価方法
および評価基準
(最低達成基準を含む)
(1,000文字以内)
/Evaluation and grading
(up to 1,000 letters)
成績評価方法:

各回のコメントフィードバック・期末試験・レポート課題から総合的に判断する.
ただし,コメントフィードバックと中間レポート課題は,補助的な位置付けである.
期末レポート課題は,発展的なオプション課題である.


評価基準:

授業で扱った言語処理系の基礎概念や実装例を理解し,自ら扱うことができるかを評価する.
期末試験の受験は,単位取得において必須とする.
尚,オプションの期末レポート課題を提出しなくても,他が十分良くできていれば,「優」が取れるように調整する見通しである.
オフィスアワー:
授業相談(1,000文字以内)
/Office hours(up to 1,000 letters)
Google Classroomで受け付ける.
学生へのメッセージ(1,000文字以内)
/Message for students(up to 1,000 letters)
現代の実用的な言語処理系は,概して大変良く出来ている.
しかし皮肉にも,様々なことが高度に自動化されていればいるほど,そこで何が行われているかについて深い知識を持たなければ,利用者が適正に扱うことはできない.

Cf. Lisanne Bainbridge, "Ironies of Automation" (1983).
その他
/Others
水2開講
キーワード
/Keywords
コンパイラ,インタプリタ,抽象機械,部分評価,コンパイラ最適化