シラバス
※学期中に内容が変更になることがあります。

2013年度

1G0171-501 

△アルゴリズムとデータ構造-501
-501
2単位/Unit  秋学期/Fall  インターネット/Internet  講義形式

  芳賀 博英

<概要/Course Content Summary>

本クラスは,インターネット講義のクラスである.内容は教室講義のクラスと全く同じである.本講義では,プログラミングの初歩を学習した者に対して,より良いプログラムを作成するための必須の内容であるアルゴリズムとデータ構造についての初歩的な講義を行う。プログラミングとは現実の世界の問題をコンピュータを使って解くことである。従って現実の世界の様々な事物をコンピュータが理解できる表現に直す必要がある。データ構造とは,現実の問題をコンピューターの中でどのように表現するかという技法であり,アルゴリズムとは典型的な問題の解決法である。本講義では膨大な内容を含むアルゴリズムとデータ構造のうち,現実の世界を表現するときによく使われる配列,リスト,ツリーというデータ構造,およびソート(並べ替え)とサーチ(検索)を中心とし,関連する内容について講義する。またアルゴリズムを考える時に重要な計算の手間(計算の複雑さ)についても講義を行う.プログラミング言語JavaもしくはCを理解していることを前提とする.

<到達目標/Goals,Aims>

(1) 基本的なアルゴリズムとデータ構造の技法を身につけて,それを必要なプログラミング言語で実装できるようになる.  
(2) 既存のアルゴリズムとデータ構造を利用する場合には,その適・不適を適切に判断できるようになる.

<授業計画/Schedule>

(実施回/
Week)
(内容/
Contents)
(授業時間外の学習/
Assignments)
(実施回/ Week) (内容/ Contents) 導入,アルゴリズムとは何か?  (授業時間外の学習/ Assignments) 当該講義の復習,次回講義の予習 
(実施回/ Week) (内容/ Contents) 配列  (授業時間外の学習/ Assignments) 当該講義の復習,次回講義の予習 
(実施回/ Week) (内容/ Contents) 簡単なソーティング  (授業時間外の学習/ Assignments) 当該講義の復習,次回講義の予習 
(実施回/ Week) (内容/ Contents) スタックとキュー  (授業時間外の学習/ Assignments) 当該講義の復習,次回講義の予習 
(実施回/ Week) (内容/ Contents) 連結リスト  (授業時間外の学習/ Assignments) 当該講義の復習,次回講義の予習 
(実施回/ Week) (内容/ Contents) 再帰アルゴリズム  (授業時間外の学習/ Assignments) 当該講義の復習,次回講義の予習 
(実施回/ Week) (内容/ Contents) 高度なソーティング  (授業時間外の学習/ Assignments) 当該講義の復習,次回講義の予習 
(実施回/ Week) (内容/ Contents) 中間まとめ  (授業時間外の学習/ Assignments) 中間まとめの復習 
(実施回/ Week) (内容/ Contents) 二分木  (授業時間外の学習/ Assignments) 当該講義の復習,次回講義の予習 
(実施回/ Week) 10  (内容/ Contents) 赤黒木  (授業時間外の学習/ Assignments) 当該講義の復習,次回講義の予習 
(実施回/ Week) 11  (内容/ Contents) 2-3-4木と外部記憶装置向けアルゴリズム  (授業時間外の学習/ Assignments) 当該講義の復習,次回講義の予習 
(実施回/ Week) 12  (内容/ Contents) ハッシュ表  (授業時間外の学習/ Assignments) 当該講義の復習,次回講義の予習 
(実施回/ Week) 13  (内容/ Contents) ヒープ  (授業時間外の学習/ Assignments) 当該講義の復習,次回講義の予習 
(実施回/ Week) 14  (内容/ Contents) グラフと重み付きグラフ  (授業時間外の学習/ Assignments) 当該講義の復習,次回講義の予習 
(実施回/ Week) 15  (内容/ Contents) まとめと今後の展望  (授業時間外の学習/ Assignments) 当該講義の復習,次回講義の予習 

<成績評価基準/Evaluation Criteria>

中間筆記試験  50%  中間試験までの講義内容が理解できているかどうか. 
期末筆記試験  50%  講義全般の内容が理解できているかどうか.中間試験の範囲も含む. 

中間試験は,教室クラスとインターネットクラスの受講生の全員が受講できる日時を設定する.具体的な日時は講義の中で述べる.

 

<成績評価結果/Results of assessment>   成績評価の見方について/Notes for assessment

    

登録者数

成績評価(%)

評点
平均値

備考

A B C D F
82 30.5 19.5 11.0 18.3 20.7 0.0 2.2 *

<テキスト/Textbook>

講義内容はどのようなテキストにも取り上げられている内容であるので,特定の教科書は指定しない.自分の気に入った書籍を選べば良い.

<参考文献/Reference Book>

石畑 清 , アルゴリズムとデータ構造 :  岩波講座 ソフトウェア科学第3巻 .   (岩波書店, 1989) .  ISBN:978-4000103435  和書の中では最も内容が充実していると思います.探索,整列,グラフなどのアルゴリズムと,スタック,リスト,待ち行列などのデータ構造を解説してあります.ただ出版年代(1989)と著者の趣味を反映してか,記述に用いられている言語はPascalという,あまりなじみのないプログラミング言語ですが,CやJavaに翻訳するのは,それほど難しくありません. 

 

柴田 望洋  『明快Javaによるアルゴリズムとデータ構造』(ソフトバンク クリエイティブ、2007)ISBN:978-4797345230  Javaを用いたアルゴリズムの実際のプログラムが豊富に提供されています.レベルはそれほど高くありません. 
 

Robert Sedgewick (原著), 野下 浩平, 星 守, 佐藤 創, 田口 東 (翻訳)   『アルゴリズムC-基礎・データ構造・整列・探索--』新版 (近代科学社、2004)ISBN:978-4764903098 翻訳書の中で一番バランスがとれていると思います.やや理論的な色彩が濃い.プログラミングが得意な人向き. 
 

川中真耶, 杵渕朋彦, 椎名俊輔  『アルゴリズムを学ぼう』(アスキー・メディアワークス、2012)ISBN:978-4048861281  表紙を見ると”おちゃらけ”の雰囲気であり,話の進め方もおちゃらけっぽいですが,内容はかなりしっかりしている.見かけにだまされて安易に買うと挫折します.ただし,本講義で述べる内容のすべてをカバーしている訳では無い.(本講義では扱わない内容も含まれている) 
 

伊藤 静香  『アルゴリズムを,はじめよう』(インプレスジャパン、2012)ISBN:978-4844332015 たぶん一番易しく書いてあると思います.と言うか,易しすぎるきらいがあります.とは言え,このレベルの書籍でウォーミングアップしてから,本格的な本で勉強するという方法も有効かと思います. 
 

この分野の書籍はたくさん出ています.内容は大きく3つに分かれます.1つ目は理論的な解析を中心に据えたもの,2つ目は個々のアルゴリズムについて説明しているもの,3つ目は辞典的な使い方をするものです.このうちこの講義の参考書としては,2つ目のカテゴリーの本が良いと思います.各カテゴリーの中では,個々の書籍の内容はそれほど差異はありません.ですから自分の気に入ったものを選んでもらったら結構です.できればプログラムのソースコードが掲載されているものの方が,いろいろな意味で便利であるとは思います.

 

お問合せは同志社大学 各学部・研究科事務室まで
 
Copyright(C) 2013 Doshisha University All Rights Reserved. 無断転載を禁止します。