2025年度 (最新) 学院等開講科目 情報理工学院 情報工学系
関数型プログラミング基礎
- 開講元
- 情報工学系
- 担当教員
- 渡部 卓雄 / 森口 草介
- 授業形態
- 講義/演習 (対面型)
- メディア利用科目
- -
- 曜日・時限
(講義室) - 月3-4 (M-124, 情報工学系計算機室) / 木3-4 (M-124, 情報工学系計算機室)
- クラス
- -
- 科目コード
- CSC.T263
- 単位数
- 110
- 開講時期
- 2025年度
- 開講クォーター
- 4Q
- シラバス更新日
- 2025年9月29日
- 使用言語
- 日本語
シラバス
授業の目的(ねらい)、概要
本講義では,手続き型プログラミング基礎・発展で学んだ手続き型プログラミングの考え方とは異なるプログラミングパラダイムに基づく関数型プログラミング言語について,その基本的な考え方やその原理となっている計算のメカニズムについて説明する.プログラミング言語としてはSchemeを用いる.
解決しようとしている問題に応じて適切なプログラミングパラダイムを見極め,それに応じたプログラミング言語を用いてシステムを記述することは,システムの記述容易性,理解容易性,保守性などの観点から重要である.この講義では手続き型プログラミング基礎・発展と異なる観点から問題を捉えることにより,異なるプログラミングパラダイムに共通の概念や相違点を理解し,問題に応じて適切なプログラミング言語を利用する能力を身につけることを目指す.
到達目標
(1) 再帰プログラムが書ける
(2) 関数型のプログラムが書ける
(3) リスト処理のプログラムが書ける
(4) 高階手続きが活用したプログラムが書ける
キーワード
手続き抽象, リスト, スコープ,可変データ,不変データ,複合データ,副作用,高階関数,クロージャ,遅延オブジェクト,ストリーム,継続,マクロ,インタプリタ,型システム
学生が身につける力
- 専門力
- 教養力
- コミュニケーション力
- 展開力 (探究力又は設定力)
- 展開力 (実践力又は解決力)
授業の進め方
講義は担当教員による基本概念の説明とそれを実践で使いこなせるようにするためのプログラミングの実習から構成される. この二種類の講義は原則として交互におこなう.
授業計画・課題
授業計画 | 課題 | |
---|---|---|
第1回 | 導入, プログラミング言語の系譜,Scheme概説 |
講義で指定する |
第2回 | 前回講義の内容に関するプログラミング実習 |
講義で指定する |
第3回 | 基本データ,リスト, スコープ,再帰 |
講義で指定する |
第4回 | 前回講義の内容に関するプログラミング実習 |
講義で指定する |
第5回 | 複合データ,可変データと不変データ,副作用 |
講義で指定する |
第6回 | 前回講義の内容に関するプログラミング実習 |
講義で指定する |
第7回 | 高階関数,クロージャ,遅延オブジェクトとストリーム |
講義で指定する |
第8回 | 前回講義の内容に関するプログラミング実習 |
講義で指定する |
第9回 | 継続と制御の抽象化,マクロ |
講義で指定する |
第10回 | 前回講義の内容に関するプログラミング実習 |
講義で指定する |
第11回 | 前回講義の内容に関するプログラミング実習 |
講義で指定する |
第12回 | インタプリタ |
講義で指定する |
第13回 | 前回講義の内容に関するプログラミング実習 |
講義で指定する |
第14回 | 型システム,まとめ |
講義で指定する |
準備学修(事前学修・復習)等についての指示
学修効果を上げるため,教科書や配布資料等の該当箇所を参照し,「毎授業」授業内容に関する予習と復習(課題含む)をそれぞれ概ね100分を目安に行うこと。
教科書
特に指定しない
参考書、講義資料等
Racket Documentation (https://docs.racket-lang.org)
Matthias Felleisen, Robert Bruce Findler, Matthew Flatt & Shriram Krishnamurthi, How to Design Programs (2nd edition), MIT Press, 2014 (https://htdp.org)
Revised5 Report on the Algorithmic Language Scheme (http://www.schemers.org/Documents/Standards/R5RS/)
成績評価の方法及び基準
プログラミング実習 (50%)
期末試験 (50%)
関連する科目
- CSC.T241 : 計算基礎論
- CSC.T243 : 手続き型プログラミング基礎
- CSC.T253 : 手続き型プログラミング発展
- CSC.T273 : オブジェクト指向プログラミング
履修の条件・注意事項
以下の科目を履修していることが望ましい
CSC.T241 : 計算基礎論
CSC.T243 : 手続き型プログラミング基礎(CSC.T244: プログラミング創造演習でもよい)
CSC.T253 : 手続き型プログラミング発展(CSC.T244: プログラミング創造演習でもよい)
その他
履修人数制限が必要な場合には,情報工学系の学生を優先することがあります.