シラバス参照

講義概要/Course Information
2024/07/19 現在

科目基礎情報/General Information
授業科目名
/Course title (Japanese)
プログラム言語基礎論
英文授業科目名
/Course title (English)
Fundamentals of Programming Languages
科目番号
/Code
開講年度
/Academic year
2024年度 開講年次
/Year offered
全学年
開講学期
/Semester(s) offered
前学期 開講コース・課程
/Faculty offering the course
博士前期課程
授業の方法
/Teaching method
講義 単位数
/Credits
2
科目区分
/Category
大学院専門教育科目 - 専門科目Ⅰ
開講類・専攻
/Cluster/Department
情報・ネットワーク工学専攻
担当教員名
/Lecturer(s)
佐藤 重幸
居室
/Office
西2-512
公開E-mail
/e-mail
fopl-2024-group@gl.cc.uec.ac.jp
授業関連Webページ
/Course website
Google Classroom
更新日
/Last update
2024/07/10 19:10:27 更新状況
/Update status
公開中
/now open to public
講義情報/Course Description
主題および
達成目標(2,000文字以内)
/Themes and goals(up to 2,000 letters)
プログラミング言語の基礎概念と形式的定義を学ぶ.
これにより,

* 異なるプログラミング言語を統一的に理解する基盤
* プログラムの振舞いを正確に推論する方法論

の獲得を目指す.

---

The main topics of this course are basic concepts and their formal definitions in programming languages.
The goal of this course is to acquire:

* A basic framework for understanding different programming languages, and
* A methodology to reason about the behaviors of programs precisely.
前もって履修
しておくべき科目(1,000文字以内)
/Prerequisites(up to 1,000 letters)
特定の科目の履修を前提にすることはないが,

* 基本的なプログラミング(例えば学域科目「プログラミング通論」相当)
* 集合論と記号論理の数学記法(例えば学域科目「離散数学」相当)

についての知識は前提とする.

---

No specific course is a strict prerequisite, but some familarity with

* Basics of programming (e.g., "Programming" at UG)
* Mathematical notations of sets and logics (e.g., "Discrete Mathematics" at UG)

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

* 形式言語を扱う科目(例えば学域科目「形式言語理論」)
* 言語処理系を扱う科目(例えば学域科目「言語処理系論」)
* Pythonを扱った経験
* 関数型の言語機能(ラムダ式やパターンマッチ)を使った経験

---

The following would help your understandiing of the content of this course:

* Courses on formal languages (e.g., "Formal Language Theory" at UG)
* Courses on compilers and/or interpreters (e.g., "Compiler" at UG)
* Experience in using Python
* Experience in using functional language features (e.g., lambda expressions and pattern matching)
教科書等(1,000文字以内)
/Course textbooks and materials(up to 1,000 letters)
授業教材はオンライン資料として配布する.
その中に,参考資料を適宜記載する.

---

The course material will be distributed online.
References are listed therein.
授業内容と
その進め方(2,000文字以内)
/Course outline and weekly schedule(up to 2,000 letters)
授業内容:

1. ガイダンス,イントロダクション
2. 構文と構文主導スキーム
3. 構造的帰納法
4. 操作的意味論
5. 停止性
6. 型システム
7. 型無しラムダ計算
8. 構文糖とチャーチエンコーディング
9. 不動点と再帰
10. 単純型付きラムダ計算
11. Logical relations
12. 可変参照
13. 存在型
14. 型推論
15. まとめ

進め方:

* 11回以降は発展的内容なので,授業進度に合わせて内容を取捨選択をする.
* 各回にコメントフィードバックを求め,次回で適宜取り上げる.

---

Outline:

1. Guidance, Introduction
2. Syntax & syntax-directed scheme
3. Structural induction
4. Operational semantics
5. Termination
6. Type system
7. Untyped lambda calculus
8. Syntax sugar & Church encoding
9. Fixed points & recursion
10. Simply typed lambda calculus
11. Logical relations
12. Mutable references
13. Existential types
14. Type inference
15. Summary

Method:

* The contents of the 11th week and later are relatively advanced; they might be omitted according to the progress of the course.
* A lecture on each week asks participants for comment feedback, and the one on the next week would give a review on it.

Type:

Cc (speak in Japanese with material in Japanese).
実務経験を活かした
授業内容
(実務経験内容も含む)
/Course content utilizing practical experience
授業時間外の学習
(予習・復習等)(1,000文字以内)
/Preparation and review outside class(up to 1,000 letters)
* 各回のコメントフィードバック,及びそれに係る復習・自習
* レポート課題,及びそれに係る自習(プログラミングを含む)

---

* Comment feedback for each lecture and self-learning for it.
* Report assignments and self-learning (including programming) for them.
成績評価方法
および評価基準
(最低達成基準を含む)
(1,000文字以内)
/Evaluation and grading
(up to 1,000 letters)
成績評価方法:

各回のコメントフィードバックとレポート課題から総合的に判断する.
ただし,コメントフィードバックは補助的な位置付けである.

評価基準:

授業で扱ったプログラミング言語の基礎概念を理解し,自ら扱うことができるかを評価する.
レポート課題の提出は,単位取得において必須とする.

---

Method:

Evaluation is based on comment feedback and report assignments, where comment feedback is supplementary.

Criteria:

Evaluated is whether you understand and can use basic concepts in programming lanugages.
Report assignments are mandatory for the credit.
オフィスアワー:
授業相談(1,000文字以内)
/Office hours(up to 1,000 letters)
Google Classroomで受け付ける.

---

Ask on Google Classroom.
学生へのメッセージ(1,000文字以内)
/Message for students(up to 1,000 letters)
プログラミング言語の基礎の知識なしに,プログラムの振舞いを正確に把握することはできない.

---

Without the knowledge of the fundamentals of programming languages, you could not grasp the behaviors of programs precisely.
その他
/Others
火3開講

---

Held in the 3rd period on Tuesday.
キーワード
/Keywords
ラムダ計算,形式的意味論,型システム

---

Lambda calculus, formal semantics, type system