![]() ![]() |
講義概要/Course Information |
科目基礎情報/General Information |
授業科目名 /Course title (Japanese) |
プログラム言語基礎論 | ||
---|---|---|---|
英文授業科目名 /Course title (English) |
Fundamentals of Programming Languages | ||
科目番号 /Code |
|||
開講年度 /Academic year |
2025年度 | 開講年次 /Year offered |
全学年 |
開講学期 /Semester(s) offered |
前学期 | 開講コース・課程 /Faculty offering the course |
博士前期課程 |
授業の方法 /Teaching method |
講義 | 単位数 /Credits |
2 |
科目区分 /Category |
大学院専門教育科目 - 専門科目Ⅰ | ||
開講類・専攻 /Cluster/Department |
情報・ネットワーク工学専攻 | ||
担当教員名 /Lecturer(s) |
佐藤 重幸 | ||
居室 /Office |
西2-512 | ||
公開E-mail |
fopl-2025-group@gl.cc.uec.ac.jp | ||
授業関連Webページ /Course website |
Google Classroom: https://classroom.google.com/c/NzUyNjE3NTk0Mjcz?cjc=oj7dg6gs | ||
更新日 /Last update |
2025/04/22 04:20:10 | 更新状況 /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) |
本科目の理解の助けになるであろう科目や経験は次の通り: * 形式言語を扱う科目(例えば学域科目「形式言語理論」) * 言語処理系を扱う科目(例えば2024年度学域科目「言語処理系論」) * 形式検証を扱う科目(例えば2024年度学域科目「ソフトウェア工学」[21124211] ) * 関数型の言語機能(ラムダ式やパターンマッチ)を使った経験 --- 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 2024) * Courses on formal verification (e.g., "Software Engineering" [21124211] at UG 2024) * 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. Inference rules & 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, operational semantics, type system, formal reasoning |