シラバス情報

授業科目名
データ構造とアルゴリズム論
(英語名)
Data Structure and Algorithm
科目区分
専門教育科目
[−]
対象学生
工学部
学年
2年
ナンバリングコード
HETBK2MCA1
単位数
2.00単位
ナンバリングコードは授業科目を管理する部局、学科、教養専門の別を表します。詳細は右上の?から別途マニュアルをダウンロードしてご確認ください。
授業の形態
講義 (Lecture)
開講時期
2024年度後期
担当教員
上浦 尚武
所属
工学研究科
授業での使用言語
日本語
関連するSDGs目標
目標9
オフィスアワー・場所
木曜10:40〜12:10・6202研究室
(メールによる事前連絡が必要)
連絡先
kamiura@eng.u-hyogo.ac.jp

対応するディプロマ・ポリシー(DP)・教職課程の学修目標
二重丸は最も関連するDP番号を、丸は関連するDPを示します。
学部DP
3◎/4◎/5◎
研究科DP
全学DP
1-1◎/4-1〇/4-2〇
教職課程の学修目標

講義目的・到達目標
【講義目的】
プログラミングの基礎となるデータ構造とアルゴリズムの理論について学習する。適切なデータ構造とそれを処理するアルゴリズムを開発・選択することは、計算機プログラムを作成する際の基本的な要素であり、情報科学の基礎でもあるため、この知識を修得することが本講義の目的である。
【達成目標】
本講義の到達目標は、データ構造と基本的アルゴリズムの基本的事柄を認識した上で、1)各種学習したアルゴリズムについて性能を時間計算量の観点で評価できること、2)各アルゴリズム設計法を、実際の問題解決に利用できるプログラムの作成に活用できること、である。
授業のサブタイトル・キーワード
サブタイトル:コンピュータサイエンスに不可欠なアルゴリズム設計手法とデータ構造解説
キーワード:時間計算量、配列、連結リスト、スタック、キュー、2分探索法、ハッシュ法、挿入ソート、ヒープソート、分割統治法、グリーディ法、動的計画法、分枝限定法、グラフ探索法、ダイクストラ法、多項式計算、行列連続積、文字列照合
講義内容・授業計画
【講義内容】
本講義では、アルゴリズムの評価基準および計算量評価についてまず論述し、その後、基本データ構造、基本概念、データ探索、ソートアルゴリズム、分割統治法、グリーディ法などの様々なアルゴリズム設計、グラフアルゴリズム、多項式計算、文字列照合などの紹介と説明を行う。同時にそれらの計算量に関して時間オーダーと領域オーダーの両面から詳説する。

【授業計画】
 1.アルゴリズムの基礎(テキスト第1章、キーワード:アルゴリズム、計算量漸近的評価、和集合)
 2.基本データ構造(テキスト第2章、キーワード:配列、連結リスト、スタック、キュー)
 3.アルゴリズムにおける基本概念(テキスト第3章、キーワード:木、再帰)
 4.データ探索(テキスト第4章、キーワード:探索アルゴリズム、2分探索法、ハッシュ法)
 5.ソートアルゴリズム(その1)(テキスト第5章、キーワード:基本ソート、挿入ソート、ヒープソート)
 6.ソートアルゴリズム(その2)(テキスト第6章、キーワード:クイックソート、ソート性能比較、ソートの安定性)
 7.アルゴリズム設計手法(その1)(テキスト第7章、キーワード:分割統治法)
 8.中間まとめ
 9.アルゴリズム設計手法(その2)(テキスト第8章、キーワード:グリーディ法、動的計画法)
10.アルゴリズム設計手法(その3)(テキスト第9章、キーワード:バックトラック法、分枝限定法)
11.グラフアルゴリズム(その1)(テキスト第10章、キーワード:グラフ、グラフ格納データ構造、幅優先探索)
12.グラフアルゴリズム(その2)(テキスト第10章、キーワード:深さ幅優先探索、ダイクストラ法)
13.多項式と行列(テキスト第11章、キーワード:多項式計算、行列積アルゴリズム、行列連続積)
14.文字列照合アルゴリズム(テキスト第12章、キーワード:文字列照合、ホールスプールのアルゴリズム)
15.アルゴリズムの限界(テキスト第12章、キーワード:問題のクラス階層、クラスP、クラスNP, NP完全問題、NP困難問題)
 
生成系AIの利用:
生成系AIの利用については教員の指示に従うこと。生成系AIによる出力結果をそのまま課題レポートとして提出してはいけない。生成系AIによる出力をそのまま提出したことが判明した場合は単位を認定しない、又は認定を取り消すことがある。
教科書
藤原暁宏 アルゴリズムとデータ構造、森北出版株式会社(生協で購入する)
参考文献
平田富夫 アルゴリズムとデータ構造(第3版)、森北出版
事前・事後学習(予習・復習)の内容・時間の目安
【予習】授業に際して指示するテキスト・オンデマンド教材の部分を事前読み込み(28h)
【復習】講義内容の理解を深め定着させるためにテキストを読み直し(14h)、配布プリントの解答(18h)
アクティブ・ラーニングの内容
採用しない
成績評価の基準・方法
【成績評価の基準】
 時間計算量、配列、連結リスト、スタック、キュー、2分探索法、ハッシュ法、挿入ソート、ヒープソートなどの基本的事項について理解し、より具体的なアルゴリズム設計法である分割統治法、グリーディ法、動的計画法、分枝限定法をグラフ探索、最短経路問題、多項式計算、行列連続積、文字列照合などに応用できる能力(知識、思考力、計算力)の到達度に基づき、S(90点以上)、A(80点以上)、B(70点以上)、C(60点以上)による成績評価のうえ、単位を付与する。
【成績評価の方法】
 授業計画の項目1から6について中間試験を11月中旬に行う。期末試験は2月上旬に行い、項目7から15を主な範囲として出題する。中間試験50%、期末試験50%を基準として、受講態度(プリント提出状況、積極的な質問等)を含めて総合的に評価する。
課題・試験結果の開示方法
毎回講義時にプリントをユニバーサルパスポートのクラスプロファイル機能を使って公開し、その解答もクラスプロファイル機能を使って公開するとともに、講義内で解説する。
定期試験は、全体的な講評や模範解答をユニバーサルパスポートのクラスプロファイル機能を使って示す。
履修上の注意・履修要件
・先修科目の記載:プログラミング論Ⅰ、プログラミング論Ⅱ、以上の単位取得が望ましい。
実践的教育
該当しない
備考
自然科学に基づいた専門分野の基礎力
電気、電子、情報分野の広い知識と特化した分野の知識

英語版と日本語版との間に内容の相違が生じた場合は、日本語版を優先するものとします。