シラバス情報

授業コード
520196
オムニバス
科目名
アルゴリズムとデータ構造
科目名(英語)
Algorithm and Data Structure
配当学年
2年
単位数
2.00単位
年度学期
2025年度秋学期
曜日時限
水曜1限
対象学科
先_情報
コース
科目区分
専門科目
必選の別
選択科目
担当者
呉本 尭
教室
5-203
実務家教員担当授業
授業の目的と進め方
問題を解決するためには、問題を把握・分析して望ましい解き方の手続き(アルゴリズム)を定めなければならない。また、データを格納する方法(データ構造)も解決方法に合わせて定めることが求められる。この授業では、データ処理の基礎となる探索や整列、データ構造など、さらに最適解探索ではネットワーク問題のグラフによる解探索などの手法を修得する。なお、これらの手法には複数の解法があることを理解する。
達成目標1
アルゴリズム、データ構造、プログラムの概念と相互の関係が理解できる。
達成目標2
様々なアルゴリズムをC言語プログラムにすることができる
達成目標3
フローチャートが作成できる。
達成目標4
・整列法(バブルソート、選択ソート、クイックソート、バケットソート、分布数え上げソート、挿入ソート、シェルソート、基数ソート、マージソート、ヒープソート)の基本的なアルゴリズムを作成できる。
達成目標5
・ネットワーク問題のグラフ表現と探索のアルゴリズムを作成できる。
達成目標6
・問題の解決方法(すべての可能なケースを列挙して解の探索)を考え、解を得ることで問題を解決するまでの手順を理解し、作成できる。
達成目標7
オーダー記法(ランダウの記号)による計算量の表現ができる。

アクティブラーニング
ディスカッション
ディベート
グループワーク
プレゼンテーション
実習
フィールドワーク
その他課題解決型学習

授業計画
授業時間外課題(予習および復習を含む)
第1回
アルゴリズムとは
アルゴリズムについて調べる(予習1時間)。
アルゴリズムを確認し、データ構造との関係について確認する(復習1時間)。
第2回
アルゴリズムと基本データ構造
プログラム・フローチャートとC言語について調べる(予習1時間)。
スタックを使った数式の演算手続(C言語のプログラム)を確認する(復習1時間)。
第3回
アルゴリズム:エラトステネスの篩による素数探索;最大公約数の探索
データ構造:キュー、スタック
アルゴリズムと具体化例を調べる(予習1時間)。
線形探索と2分探索の手順をフローチャートとC言語プログラムで確認する(復習1時間)。
第4回
アルゴリズムと計算量
ツリー構造とソートアルゴリズムを調べる(予習1時間)。
ソートアルゴリズムと計算量について確認する(復習1時間)。
第5回
バブルソート、選択ソート、挿入ソートのアルゴリズムとC言語によるプログラム
それぞれのソートアルゴリズムについて調べる(予習1時間)。
課題を完成して、レポートを提出する(復習2時間)。
第6回
シェルソート、バケットソート、分布数え上げソート、基数ソートのアルゴリズムとC言語プログラム
それぞれのアルゴリズムについて調べる(予習1時間)。
課題を完成して、レポートを提出する(復習2時間)。
第7回
マージソート、ヒープソート、クィックソートのアルゴリズムとC言語プログラム
ハッシュ法について調べる(予習1時間)。
ハッシュ法の具体的な手続き方法を確認する(復習1時間)。
第8回
オーダー記法・計算量・文字列検索アルゴリズム
計算量とオーダー記法について調査する(予習1時間)。
中間テストに向けて、これまでの授業内容を復習する(復習2時間)。
第9回
中間テスト
動的計画法とダイクストラ法を調査する(予習1時間)
第10回
動的計画法とダイクストラ法のアルゴリズムとC言語プログラム
動的計画法とダイクストラ法ついて調べる(予習1時間)。
課題を完成して、レポートを提出する(復習2時間)。
第11回
グラフ表現と経路探索; 動的計画法でフィボナッチ数列を求める
グラフ表現と最短経路、フィボナッチ数列について調べる(予習1時間)。
課題を完成して、レポートを提出する(復習2時間)。
第12回
動的計画法でナップサック問題を解く
全組合せおよび順列組合せについて調べる(予習1時間)。
課題を完成して、レポートを提出する(復習1時間)。
第13回
遺伝的アルゴリズムとその応用
遺伝的アルゴリズムについて調べる(予習1時間)。
課題を完成して、レポートを提出する(復習1時間)。
第14回
期末試験に向けて
これまでの授業内容を再度確認する(復習3時間)。


課題等に対するフィードバック
学修内容を授業内でフィードバックする
評価方法と基準
レポートを提出する状況と中間テスト、期末試験の成績を総合的に評価する。合計60点以上が合格とする。
テキスト
毎回、講義資料をTeamsで公開する。
参考図書
・湯田幸八、伊原充博:アルゴリズムとデータ構造、コロナ社(2002)ISBN:4-339-01198-3
・原隆浩、水田智史、大川剛直、西尾章治郎:アルゴリズムとデータ構造、共立出版(2012)ISBN:978-4-320-12310-6
科目の位置づけ(学習・教育目標との対応)
プログラミングの基礎を学んだ学生を対象とした科目である。プログラミングにおいて、より効率的で簡素な解法(アルゴリズム)のプログラムを作成するための基本的な解法の学習である。問題解決を計算機(プログラミング)で解決できるように、解決方法の手続きを学習する。手続き型のプログラミングを学ぶ学生に必須の授業である。
履修登録前の準備
ノートPC必携。
前提となる知識は、手続型の基本的プログラムの作成ができること。2年次春学期までのプログラミングに関係する授業の単位を修得しているか同等の知識を有することが望ましい。なお、使用言語の種類については問わないが、授業ではC言語を基に進めていく。