アルゴリズムとデータ構造入門
講義詳細
- 年度・期
- 2005年度・後期
- 開講部局名
- 工学部
- 使用言語
- 日本語
- 教員/講師名
- 奥乃 博(教授)
- 備考
- ・TUT Scheme (湯淺先生小宮先生開発)を使用して講義を進める。 ・当該年度の授業回数などに応じて一部省略、追加がありうる。 ・2〜3回のプログラム演習・レポートを課す。中間テストを行う場合もある。 ・習熟度の早い学生に対しては、参考書を使ってより高度な随意課題を課す等の配慮を行う。 ・古典力学に興味のある学生Gerald Jay Sussmanらの著書"Structure and Interpretation of Classical Mechanics" (MIT Press, 2001) を本講義の続きとして独習することを勧める。 ・オンライン版フルテキスト (MIT Press 提供)
シラバス
開講年度・開講期 | 2005・後期 | 配当学年 | 工学部情報学科第1学年 |
---|---|---|---|
教員 | 奥乃 博(教授) |
||
授業の概要・目的 | コンピュータ上で計算を行うプログラムはデータ構造とアルゴリズムから構成される.本講義では,プログラミングについてコンピュータサイエンスの立場から論じる。使用するプログラミング言語は Scheme であり、基本的なプログラミングの概念について学ぶとともに、実際にプログラミングを経験することを通じて、プログラミングの本質を習得することを狙う。 なお、本講義では教科書の前半の話題を取り上げ、後半は「プログラミング言語」 (湯淺先生, 第2学年前期配当)で取り上げる。 |
||
授業計画と内容 | 1章 手続きによる抽象化 ( 3 回 ) 1.1章 プログラミングの要素 1.2章 手続きとその生成するプロセス 1.3章 抽象化の高階手続きによる形式化 2章 データによる抽象化 ( 4 回 ) 2.1章 データ抽象化とは 2.2章 階層データ構造と閉包性 2.3章 記号データ 2.4章 抽象データの多重表現 2.5章 汎用演算のシステム 3章 モジュラー性・オブジェクト・状態 ( 4 回 ) 3.1章 代入と局所状態 3.2章 評価の環境モデル 3.3章 可変データでのモデル化 3.4章 同時性 3.5章 ストリーム ソーティング(整列)アルゴリズム ( 3 回 ) ・ 整列アルゴリズムの設計と解析 ・ 挿入ソート・選択ソート・シェルソート ・ クイックソートとピボットの選択法 ・ ヒープソート・マージソート ・ 辞書式順序・バケットソート・基数ソート 第1回 プログラムの構築 第2回 TUT Scheme の 使い方 第3回 プログラムの構築 第4回 手続きとその生成するプロセス 第5回 手続きとその生成するプロセス 第6回 抽象化の高階手続きによる形式化 第7回 抽象化の高階手続きによる形式化・データ抽象化とは 第8回 データ抽象化とは・階層データ構造と閉包性 第9回 階層データ構造と閉包性 第10回 記号データ 第11回 抽象データの多重表現 第12回 記号データ・汎用演算のシステム 第13回 学術情報メディアセンターでの TUS/Tk の使い方 |
||
授業外学習(予習・復習)等 | 【必修課題1】 「コンピュータの歴史」について調査し、最低5枚のレポートとして提出。 分からない用語等は、用語集をつけること。 レポートの内容について、講義中に質問をし、理解度を確認することがある。 また、レベルの低いレポートは、再提出させる。 【必修課題2】 第2章までのすべての練習問題 動作確認していないものは減点。 【必修課題3】 図形言語 1 気のきいた painter を1種類作れ。(painter λ のプログラム) 2 空間充填曲線を1種類作れ。(例. 右図のHilbert curve, Peano curve) 3 フラクタルを1種類作れ。(例. Koch curve, Snowflake, Sierpinski's Gasket) ・tustk2 の使い方 ・必修課題3のヒント ・作品集 (New) 【随意課題1】 Participate ACM Inter-University Programming Contest 【随意課題2】 Fixed-Point 探索の過程をグラフに表示せよ。 【随意課題3】 これはすごいという抽象化を使った Scheme プログラム。例えば、 ・整数論・群論・組合せ論 ・線形計画法・古典力学 ・パズル解法・ゲーム 【随意課題4】 図形言語の frame を円板にして、Escher の circle-limit を作成。 随意課題を提出し、その内容があるレベルを越えており、さらに、試験・レポートが最低合格点を満たしていた場合には、最終成績を1ランクあるいは2ランク上げます。ただし、上限は100点です。 |
||
教科書・参考書等 | [教科書] ・ジェラルド・サスマン他著(和田英一訳): 『計算機プログラムの構造と解釈』 (ピアソン・エデュケーション);訳者(東京大学名誉教授・IIJ研究所所長) ・原著 "Structure and Interpretation of Computer Programs"(MIT Press)を薦める。オンライン版フルテキスト(MIT Press 提供) [参考書] ・ジョン・ベントリー(小林健一郎訳):『珠玉のプログラミング-本質を見抜いたアルゴリズムとデータ構造』(ピアソン・エデュケーション) ・原著『Programming Pearls』(ACM Press)を薦める。 |