本講義では,プログラミング第一で学んだ手続き型プログラミングの考え方とは異なるプログラミングパラダイムに基づく関数型プログラミングとオブジェクト指向プログラミングについて,その基本的な考え方やその原理となっている計算のメカニズムについて説明する.プログラミング言語としてはSchemeとJavaを用いる.
解決しようとしている問題に応じて適切なプログラミングパラダイムを見極め,それに応じたプログラミング言語を用いてシステムを記述することは,システムの記述容易性,理解容易性,保守性などの観点から重要である.この講義ではプログラミング第一と異なる観点から問題を捉えることにより,異なるプログラミングパラダイムに共通の概念や相違点を理解し,問題に応じて適切なプログラミング言語を利用する能力を身につけることを目指す.
(1) 再帰プログラムが書ける
(2) 関数型のプログラムが書ける
(3) リスト処理のプログラムが書ける
(4) 高階手続きが活用したプログラムが書ける
(5) Javaの基本的な文法を身に付ける
(6) オブジェクト指向のプログラムが書ける
手続き抽象,データ抽象,可変データ構造,ストリーム,リスト操作,高階手続き,継続,クラスとインスタンス,継承,差分プログラミング
✔ 専門力 | 教養力 | コミュニケーション力 | 展開力(探究力又は設定力) | ✔ 展開力(実践力又は解決力) |
講義の最初に前回の講義内容についての小テストをおこないます.毎回の講義を復習し,事前に配布するハンドアウトには小問が含まれていますのでそれを事前に解いてみると講義の理解が深まるでしょう.また,この講義は情報実験第二と内容を同期しておこないます.この講義で学んだ概念を情報実験第二のプログラミングを通して使うことにより理解を深めます.
授業計画 | 課題 | |
---|---|---|
第1回 | プログラミング言語の系譜,Scheme概説 | 講義で指定する. |
第2回 | 再帰プログラム,名前のスコープ,高階手続き | |
第3回 | 合成データ,データ抽象 | |
第4回 | リスト処理 (変換・フィルタリング・畳み込み) | |
第5回 | 代入,閉包(クロージャ) | |
第6回 | 環境モデル | |
第7回 | 遅延オブジェクト,ストリーム | |
第8回 | 継続 | |
第9回 | タグ付きデータ,メッセージパッシング | |
第10回 | オブジェクト指向 | |
第11回 | Java概説 | |
第12回 | Java文法 | |
第13回 | 継承,オーバーライド,オーバーロード | |
第14回 | 抽象クラス,インタフェース,パッケージ,例外 | |
第15回 | 入出力,文字列操作,例題:図形の描画 |
特に指定しない.
ハンドアウトを配布する.
・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/)
・入門Scheme
(http://www.dinukai.org/programming/scheme/primer/scheme\_primer\_j.html)
・独習Scheme三週間
(http://www.sampou.org/scheme/t-y-scheme/t-y-scheme.html)
・もうひとつのScheme入門
(http://www.shido.info/lisp/idx\_scm.html)
・Kahuaプロジェクト,プログラミングGauche,オライリージャパン,2008.
・Gaucheリファレンスマニュアル
(http://practical-scheme.net/gauche/memo-j.html)
・結城浩,改訂第2版Java言語プログラミングレッスン,2005.
(http://www.hyuki.com/jb/)
・権藤克彦,Javaによるプログラミング入門,サイエンス社,2000年.
・JavaDrive --- Java 入門 ---
(http://www.javadrive.jp/start/)
・Ken Arnold, David Holmes, James Gosling,
The Java Language Specification (3rd Ed.)
(http://java.sun.com/docs/books/jls/)\\
柴田芳樹 (訳), プログラミング言語Java 第3版, ピアソンエデュケーショ
ン,2001.
・JDK 6ドキュメント
(http://java.sun.com/javase/ja/6/docs/ja/)
講義への貢献 (10%):質問する,質問に答えること
小テスト (30%):前回の講義内容に関する小テスト
期末テスト:上記到達目標について筆記試験をおこなう (ノート,参考書などの参照は不可)
計算基礎論,プログラミング第一を履修していること.
特になし.