2024年度 学院等開講科目 情報理工学院 情報工学系
関数型プログラミング基礎
- 開講元
- 情報工学系
- 担当教員
- 德永 健伸 / 森口 草介
- 授業形態
- 講義/演習 (対面型)
- メディア利用科目
- -
- 曜日・時限
(講義室) - 月7-8 (M-124,情報工学系計算機室) / 木7-8 (M-124,情報工学系計算機室)
- クラス
- -
- 科目コード
- CSC.T263
- 単位数
- 110
- 開講時期
- 2024年度
- 開講クォーター
- 3Q
- シラバス更新日
- 2025年3月17日
- 使用言語
- 日本語
シラバス
授業の目的(ねらい)、概要
本講義では,手続き型プログラミング基礎・発展で学んだ手続き型プログラミングの考え方とは異なるプログラミングパラダイムに基づく関数型プログラミング言語について,その基本的な考え方やその原理となっている計算のメカニズムについて説明する.プログラミング言語としてはSchemeを用いる.
解決しようとしている問題に応じて適切なプログラミングパラダイムを見極め,それに応じたプログラミング言語を用いてシステムを記述することは,システムの記述容易性,理解容易性,保守性などの観点から重要である.この講義では手続き型プログラミング基礎・発展と異なる観点から問題を捉えることにより,異なるプログラミングパラダイムに共通の概念や相違点を理解し,問題に応じて適切なプログラミング言語を利用する能力を身につけることを目指す.
到達目標
(1) 再帰プログラムが書ける
(2) 関数型のプログラムが書ける
(3) リスト処理のプログラムが書ける
(4) 高階手続きが活用したプログラムが書ける
キーワード
手続き抽象,可変データ構造,ストリーム,リスト操作,高階手続き,継続
学生が身につける力
- 専門力
- 教養力
- コミュニケーション力
- 展開力 (探究力又は設定力)
- 展開力 (実践力又は解決力)
授業の進め方
講義は担当教員による基本概念の説明とそれを実践で使いこなせるようにするためのプログラミングの実習から構成される. この二種類の講義は原則として交互におこなう.
授業計画・課題
授業計画 | 課題 | |
---|---|---|
第1回 | 導入 | 講義で指定する |
第2回 | プログラミング言語の系譜,Scheme概説 | 講義で指定する |
第3回 | 前回講義の内容に関するプログラミング実習 | 講義で指定する |
第4回 | 再帰プログラム,名前のスコープ,高階手続き | 講義で指定する |
第5回 | 前回講義の内容に関するプログラミング実習 | 講義で指定する |
第6回 | 合成データ,データ抽象 | 講義で指定する |
第7回 | 前回講義の内容に関するプログラミング実習 | 講義で指定する |
第8回 | リスト処理 (変換・フィルタリング・畳み込み) | 講義で指定する |
第9回 | 前回講義の内容に関するプログラミング実習 | 講義で指定する |
第10回 | 代入,閉包(クロージャ),環境モデル | 講義で指定する |
第11回 | 前回講義の内容に関するプログラミング実習 | 講義で指定する |
第12回 | 遅延オブジェクト,ストリーム | 講義で指定する |
第13回 | 前回講義の内容に関するプログラミング実習 | 講義で指定する |
第14回 | まとめ (期末試験) |
準備学修(事前学修・復習)等についての指示
学修効果を上げるため,教科書や配布資料等の該当箇所を参照し,「毎授業」授業内容に関する予習と復習(課題含む)をそれぞれ概ね100分を目安に行うこと。
教科書
特に指定しない
参考書、講義資料等
・Harold Abelson and Gerald Jay Sussman,Structure and
Interpretation of Computer Programs, 2nd Edition, The MIT Press,
1996. (http://mitpress.mit.edu/sicp/)
和田英一 (訳) 計算機プログラムの構造と解釈 第2版 ,ピアソンエデュケーション,2000.
・Revised5 Report on the Algorithmic Language Scheme
(http://www.schemers.org/Documents/Standards/R5RS/)
成績評価の方法及び基準
プログラミング実習 (30%)
期末試験 (70%)
COVID-19の感染拡大状況によっては期末試験をしない場合があります.その場合はプログラミング実習の結果を元に成績をつけます.
関連する科目
- CSC.T241 : 計算基礎論
- CSC.T243 : 手続き型プログラミング基礎
- CSC.T253 : 手続き型プログラミング発展
- CSC.T273 : オブジェクト指向プログラミング
履修の条件・注意事項
以下の科目を履修していることが望ましい
CSC.T241 : 計算基礎論
CSC.T243 : 手続き型プログラミング基礎
CSC.T253 : 手続き型プログラミング発展
連絡先 (メール、電話番号) ※”[at]”を”@”(半角)に変換してください。
take[at]c.titech.ac.jp
その他
履修人数制限が必要な場合には,情報工学系の学生を優先することがあります.