![]() ![]() |
講義概要/Course Information |
科目基礎情報/General Information |
授業科目名 /Course title (Japanese) |
プログラム言語基礎論 | ||
---|---|---|---|
英文授業科目名 /Course title (English) |
Fundamentals of Programming Languages | ||
科目番号 /Code |
|||
開講年度 /Academic year |
2021年度 | 開講年次 /Year offered |
全学年 |
開講学期 /Semester(s) offered |
前学期 | 開講コース・課程 /Faculty offering the course |
博士前期課程 |
授業の方法 /Teaching method |
講義 | 単位数 /Credits |
2 |
科目区分 /Category |
大学院専門教育科目 - 専門科目Ⅰ | ||
開講類・専攻 /Cluster/Department |
情報・ネットワーク工学専攻 | ||
担当教員名 /Lecturer(s) |
岩崎 英哉 | ||
居室 /Office |
西9-517 | ||
公開E-mail |
iwasaki __AT__ cs.uec.ac.jp (__AT__-> @) | ||
授業関連Webページ /Course website |
https://ipl.cs.uec.ac.jp/~iwasaki/lecture/pl2021/index.html (電気通信大学からのみアクセス可) | ||
更新日 /Last update |
2021/03/15 12:26:33 | 更新状況 /Update status |
公開中 /now open to public |
講義情報/Course Description |
主題および 達成目標(2,000文字以内) /Themes and goals(up to 2,000 letters) |
簡単な関数型言語を題材として,プログラミング言語の基礎概念,言語処理系の構成法について学ぶ.授業の到達目標は次の通りである. (1) プログラミング言語の基本的な概念を理解する. (2) 講義対象言語処理系の内容を理解し,処理系の簡単な拡張ができるようになる. Main topics of this lecture are fundamental concepts of programming languages and structures of programming language systems. |
---|---|
前もって履修 しておくべき科目(1,000文字以内) /Prerequisites(up to 1,000 letters) |
なし. None. |
前もって履修しておくこ とが望ましい科目(1,000文字以内) /Recommended prerequisites and preparation(up to 1,000 letters) |
プログラミング関係およびオブジェクト指向関係の講義を履修しておくのが望ましい. Lectures on programming and object-oriented systems. |
教科書等(1,000文字以内) /Course textbooks and materials(up to 1,000 letters) |
プリントを配布する. Handouts are distributed. |
授業内容と その進め方(2,000文字以内) /Course outline and weekly schedule(up to 2,000 letters) |
授業内容 第1回:プログラミング言語,関数型言語と手続き型言語 第2回:関数型言語Haskellによるプログラミングの基本 第3回:変数と関数 第4回:式の評価と環境 第5回:評価戦略と遅延評価, 変数のスコープ 第6回:リスト 第7回:高階関数 第8回:代数データ型 第9回:簡単な関数型言語の構文とデータ構造 第10回:簡単な関数型言語のインタプリタ − 値呼び静的スコープの場合 第11回:簡単な関数型言語のインタプリタ − 値呼び動的スコープの場合 第12回:簡単な関数型言語のインタプリタ − 名前呼び静的スコープの場合 第13回:継続 第14回:継続渡し形式のインタプリタ 第15回:まとめ 1. Programming languages: functional languages and procedural languages. 2. Basics of programming in functional language Haskell. 3. Variables and functions. 4. Evaluation and environments. 5. Lazy evaluation and scope of variables. 6. Lists. 7. Higher-order functions. 8. Algebraic datatypes. 9. A tiny functional language. 10. Interpreter of a tiny functional languages: call by value and static scope. 11. Interpreter of a tiny functional languages: call by value and dynamic scope. 12. Interpreter of a tiny functional languages: call by name and static scope. 13. Continuations. 14. Continuation passing interpreter of a tiny functional language. 15. Summary. |
実務経験を活かした 授業内容 (実務経験内容も含む) /Course content utilizing practical experience |
|
授業時間外の学習 (予習・復習等)(1,000文字以内) /Preparation and review outside class(up to 1,000 letters) |
配布プリントをよく復習すること.特に,授業でとりあげたプログラムは,実際に動かして動作を確認すること. It is important to review properly. Especially, it is important to execute the programs presented in the lecture for a deeper understanding |
成績評価方法 および評価基準 (最低達成基準を含む) (1,000文字以内) /Evaluation and grading (up to 1,000 letters) |
以下を総合して評価する (1)(オンデマンド方式の場合) 毎回の確認テスト (2)中間レポート(3)最終レポート 最低達成基準は次の通り. (1) プログラミング言語の基本的な概念を理解する. (2) 講義対象言語処理系の内容を理解し,処理系の簡単な拡張ができるようになる. Evaluation is made on the basis of the quiz in every lecture (in case of on-demand lectue) and two reports assigned in the lecture. |
オフィスアワー: 授業相談(1,000文字以内) /Office hours(up to 1,000 letters) |
(オンデマンド方式の場合) WebClassの本講義の掲示板を利用するか,電子メールを用いること. Use the forum system in WebClass (in case of on-demand lectue) or send a message by e-mail. |
学生へのメッセージ(1,000文字以内) /Message for students(up to 1,000 letters) |
計算機そのものを研究対象とする人にとっても,計算機を道具として使う人にとっても,プログラミング言語そのものに関する基本的な概念を理解し,プログラミング言語処理系内部における処理内容を知っていることは重要である.復習をしっかり進めていけば難しい内容ではない. It is quite important for both those who specialize in computer systems and those who use computers as tools to understand fundamental structure and interpretation of computer programs. This lecture is not difficult for those who review properly. |
その他 /Others |
なし None |
キーワード /Keywords |
プログラミング言語,関数型言語,言語処理系 Programming Languages, Functional Programming, and Programming Language Systems. |