2009年度 アルゴリズムとデータ構造入門

[ 講義予定・宿題 | 課題 | シラバス | 評価 | 教科書 | JAKLD Scheme | 参考書 | 可視化 | 講義資料トップ ]

アルゴリズムとデータ構造入門では, 『計算機プログラムの構造と解釈』 (SICP) の第1章と第2章を JAKLD (Java版Scheme) を使って習得するとともに, ソーティング, 探索, ハッシュについても学びます.

* 工学部情報学科 第1学年後期配当・火曜日第3限・工学部8号館共同2
* 文学部・文学研究科の講義「情報・史料学 特殊講義」
* 13時0分〜14時30分 (TAへの質問:12時40分〜12時55分)
* TA
大塚 琢馬君 (奥乃研M1・ロボット聴覚・音楽ロボットグループ)
松山 匡子君 (奥乃研M1・音声対話グループ)
安良岡 直希君 (奥乃研M1・音楽情報処理グループ)
* TAのページ (レポートの講評等あり)
* JAKLD Java版組み込み用Scheme (湯淺先生作成) を使用します. (下記に使用法あり

講義予定・宿題

* 10月 6日: 第1回 教科書1.1節
宿題: 階乗の計算・レポート
提出先は, 10号館1階事務室前レポート箱 (期限は10月13日12:00)
* 10月13日: 第2回 Jakld Scheme の使い方 馬谷先生(湯淺研助教)
* 10月20日: 第3回 教科書1.1節, 1.2節
宿題: Fibonacci Function についてのレポート
提出先は, 10号館1階事務室前レポート箱 (期限は10月27日12:00)
* 10月27日:第4回 教科書1.2節
宿題: 小銭交換数, Akermann Function についてのレポート
提出先は, 10号館1階事務室前レポート箱 (期限は11月9日17:00)
* 11月10日: 第5回 教科書1.3節
宿題: Ex1.29〜32. 随意 33
提出先は, 10号館1階事務室前レポート箱 (期限は11月17日正午)
* 11月17日:第6回 教科書1.3節
宿題: Ex.1.35, 1.41, 1.42, 1.43
提出先は, 10号館1階事務室前レポート箱 (期限は11月25日正午)
* 12月 1日:第7回 教科書2.1, 2.2節
宿題はありません.
* 12月 8日:第8回中間試験 (8号館3階大会議室)
範囲は, 2.2章 (Ex.2.19) までの教科書 (英語P.103まで, 邦訳P.58まで) および講義内容.
* 12月15日:第9回 教科書2.3節
宿題: Ex.2.33, 2.34, 2.35
随意課題 Ex2.44 (n-queens)
提出先は, 10号館1階事務室前レポート箱 (期限は12月22日正午)

* 12月22日:第10回 図形言語
必修課題の説明をするので必ず出席すること.
宿題: 授業中に指示.
提出は, メイルで. (期限は1月12日正午のはず. 授業中の情報が優先)

* 1月 7日:第11回 教科書第2.4節, 2.5節 (2.5.2含 迄) 松の内なので, 出席者にはお年玉が出ます.

* 1月12日:第12回 ソーティング
* 1月19日:第13回 ソーティング

* 2月 2日, 8号館3階大講義室:期末試験 と予想. (FYI)

課題

*必修課題
【必修課題1】  第2章までの宿題 (毎週提出)
〆切に遅れたり, 動作確認していないものは減点. Better later than never.

レポートを書くためのスタイルファイル・例
このdirectoryにあります.

【必修課題2】  図形言語の課題 (ソースプログラムは奥乃までメイルで送付すること)
提出先は, 10号館1階事務室前レポート箱かメイルで (期限は2月16日午後1時)

卒業する方は2月12日午後4時.

レポートには, 工夫した点やアルゴリズムを明記して下さい.

*【随意課題】  自由課題です.例えば, 下記のようなものが考えられます.
【随意課題1】   (提出期限2010年2月22日 奥乃の部屋まで)
Participate ACM Inter-University Programming Contest (H18〜20年度毎年1名参加)

【随意課題2】 (提出期限2010年3月15日 奥乃の部屋まで)
第2章までのすべての練習問題 (宿題分は改めて提出する必要なありません :-) )
動作確認していないものは減点. (毎年複数名)

【随意課題3】 (提出期限2010年3月15日 奥乃の部屋まで)

【随意課題4】  (提出期限2010年3月15日 奥乃の部屋まで)
これはすごいという抽象化を使った Scheme プログラム. (H17年度2名提出). 例えば,
  • 整数論・群論・組合せ論
  • 線形計画法・古典力学 (福嶋先生の講義の復習にもなります.) (H16年度1名)
  • パズル解法・ゲーム・数独 (H19年度2名)

【随意課題5】  (提出期限2010年3月15日 奥乃の部屋までレポート・作品・プログラムを)
湯淺先生開発のLego Mindstoms 用 Lisp XSを 使って, 気のきいた挙動をする自律ロボットを作れ. (H18年度1名)

【随意課題6(難問)】 (提出期限2010年3月15日 奥乃の部屋まで)
図形言語の frame を円板にして, Escher の circle-limit を作成. (H17年度, H19年度1名, H20年度2名提出)

【随意課題7】 (申請期限2010年2月22日 奥乃の部屋まで)
本講義で, 困っている友人の援助をし, TAの手助けをする. (H19年度複数名)
  • 毎回の宿題・レポートで誰の援助をしたかを, 提出レポートの中に明記すること.
  • できれば, 友人が困っていたことをできるだけ詳細にレポートすること.

シラバス

コンピュータ上で計算を行うプログラムはデータ構造とアルゴリズムから構成される. 本講義では,プログラミングについてコンピュータサイエンスの立場から 論じる. 使用するプログラミング言語は Scheme であり, 基本的なプログラミングの 概念について学ぶとともに, 実際にプログラミングを経験することを通じて, プログラミングの本質を習得することを狙う.

なお, 本講義では教科書の前半の話題を取り上げ, 後半は「プログラミング言語」 (湯淺先生, 第2学年前期配当, 90170)で取り上げる.

評価方法

本講義を最後まで受け,試験を受け,さらに,必修課題を提出した人の成績の 平均は過去4年間75点を越えています.

教科書

本講義は「教科書は持っているもの」として進めます.

Schemeの使い方

JAKLD Scheme (Java版組み込み用Scheme)

* Java 版 組み込み用Scheme (湯淺先生作成) を使用して講義を進める.
  • 図形言語 (& 末尾再帰) もサポート.
  • MIDI音源もサポート. マニュアル
  • java -jar jakld.jar で実行
  • 実行例は左側

  • 末尾再帰サポート有り・無しの2つの版がある. (上記の jalkd.jar を使用して下さい)
  • java Eval で実行

その他のSchemeの処理系 (御使用の場合は自己責任で)

* 2005年度TAの村瀬君による Schemeの処理系いろいろ

* TUT Scheme (湯淺先生小宮先生開発)を使用してもよい.
マニュアル
ダウンロード
小宮先生のページ
* cygwin 版 TUT-Scheme には random が入っていません. この定義をお使い下さい.
小宮先生提供ファイル. (なお, tus2, tustk2 には入っています. )
* TUS2 + HTML/Javascrip の組合せも使えます. Windows native で. (cygwin 不要)
詳細は小宮先生のページにあります.

* Cygwin 上で tustk/tustk2 を使用していて, file を読ませるとうまく動かない人は, 改行が"nl (¥n)"であることを確認して下さい.
1. od -a ファイル | more で改行が "cr nl" か"nl"だけかをチェック.
2. もし "cr nl" ならば, tr '¥r' ' ' < 古いファイル > 新しいファイル名 で, nl" に変換.

* 学術情報メディアセンターでの TUS/Tk の使い方
TUS/TK本体: /usr/local/bin/{tustk,tustk2}
サンプル (piclを含む): /usr/local/lib/tustk/demos
サンプル: デモ

* 前田君による cygwin の下での TUT Schemeの使い方 TUT Scheme under cygwin

* 伊奈君による MIT Schemeの使い方

* TUT Scheme を使わずに, MIT Scheme を使う選択をされた方は, MIT-Scheme ではなく, MIT-Scheme-6001 をインストールして下さい.

また, コースウェアは ArtDigita University の コースウエア のページにある Problem Set 4 のプログラム ( go.scm, hend.scm, hutils.scm, prmpnt.scm ) を使用して下さい.
(setup) で3つの window が出現.
(paint g1 wave), (paint g2 (square-limit orida-sensei 2)) で描画.

参考書・自習の助け

* TAのページ (運用中)

* 同じ教科書を使用した他大学での講義・演習

アルゴリズムの可視化

Amazon なか見検索  

Back to 講義関係のページ   2008年度アルゴリズムとデータ構造入門  2008年度TAのページ

(C) 2009. All wrongs reserved.
Last modified: Mon Dec 28 18:16:46 2009
奥乃博