データ構造とアルゴリズム

科目基礎情報

学校 鈴鹿工業高等専門学校 開講年度 令和05年度 (2023年度)
授業科目 データ構造とアルゴリズム
科目番号 0057 科目区分 専門 / 必修
授業形態 授業 単位の種別と単位数 履修単位: 2
開設学科 電子情報工学科 対象学年 3
開設期 通年 週時間数 2
教科書/教材 教科書:「アルゴリズムとデータ構造 第3版」平田富夫著(森北出版)参考書:「プログラミングの宝箱 アルゴリズムとデータ構造 第2版」紀平拓男・春日伸弥著(ソフトバンク),「アルゴリズムとデータ構造」湯田ほか著(コロナ社),「データ構造とアルゴリズム」斎藤ほか著(コロナ社) など
担当教員 田添 丈博

到達目標

基本的なデータ構造とアルゴリズムを理解し,プログラミングにおいて利用することができる.

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
評価項目1基本的なアルゴリズムについて実装できる.基本的なアルゴリズムについて説明できる.基本的なアルゴリズムについて説明できない.
評価項目2基本的なデータ構造について実装できる.基本的なデータ構造について説明できる.基本的なデータ構造について説明できない.
評価項目3プログラムを計算量の観点から比較・評価できる.プログラムを計算量の観点で解析できる.プログラムを計算量の観点で解析できない.

学科の到達目標項目との関係

教育方法等

概要:
これまでに開発されている,問題解決のための各種のアルゴリズムと,関連するデータ構造について理解すること.そして,プログラミング上の応用問題において,それらを活用できる能力を養うこと.理論だけでなくコーディングも重視していく.
授業の進め方・方法:
・各週の内容は,電子情報工学科学習・教育到達目標(B)<専門>の項目に相当する.
・授業は講義・輪講形式で行う.講義中は集中して聴講する.
・「授業計画」における各週の「到達目標」はこの授業で習得する「知識・能力」に相当するものとする.
注意点:
<到達目標の評価方法と基準>下記授業計画の「到達目標」を網羅した問題を2回の中間試験,2回の定期試験で出題し,目標の達成度を評価する.各到達目標に関する重みは同じである.合計点の60%の得点で,目標の達成を確認できるレベルの試験を課す.
<学業成績の評価方法および評価基準>前期中間・前期末・後期中間・学年末の4回の試験の平均点による評価を80%,プログラミング課題等に対するレポートの評価を20%として学業成績を評価する.ただし,試験の得点が60点に満たない場合は,補講の受講やレポート提出等の後,再試験により再度評価し,合格点の場合は先の試験の得点を60点と見なす.
<単位修得要件>学業成績で60点以上を取得すること.
<あらかじめ要求される基礎知識の範囲>本教科はプログラミングI,プログラミングII,マイクロコンピュータ基礎,プログラム設計,オペレーティングシステムの学習が基礎となる教科である.また,数学の基本事項について理解していることも必要である.
<レポート等>授業中に演習(C++プログラミング)を適宜行う.また,プログラミング課題に対するレポート提出を求める.さらに,それ以外に,計算問題等に対するレポート提出を求めることがある.
<備考>データ構造とアルゴリズムに関する理解は,情報工学分野における最も重要な基盤の一つである.具体例で確認・理解すると同時に,数学的な表現を理解できることも必要である.論理的・数学的な思考力を,さらに培っていくことが大切である.本教科は後に学習するソフトウェア工学,人工知能,数値解析の基礎となる教科である.

授業の属性・履修上の区分

アクティブラーニング
ICT 利用
遠隔授業対応
実務経験のある教員による授業

授業計画

授業内容 週ごとの到達目標
前期
1stQ
1週 計算のモデル,計算量 1. アルゴリズムの基礎概念について説明できる.
2週 再帰的アルゴリズム 1. アルゴリズムの基礎概念について説明できる.
3週 グラフと木 1. アルゴリズムの基礎概念について説明できる.
4週 リスト 2. 基本データ構造について説明でき,実装することができる.
5週 スタック,キュー 2. 基本データ構造について説明でき,実装することができる.
6週 ヒープ 2. 基本データ構造について説明でき,実装することができる.
7週 演習 上記1~2
8週 中間試験 これまでに学習した内容を説明できる.
2ndQ
9週 バケットソート,素朴なソーティング 3. ソーティングについて説明でき,実装することができる.
10週 マージソート,クイックソート 3. ソーティングについて説明でき,実装することができる.
11週 ヒープソート 3. ソーティングについて説明でき,実装することができる.
12週 2分探索 4. 探索について説明でき,実装することができる.
13週 2分探索木 4. 探索について説明でき,実装することができる.
14週 ハッシング 4. 探索について説明でき,実装することができる.
15週 演習 上記3~4
16週
後期
3rdQ
1週 素朴なストリングマッチング 5. ストリングマッチングについて説明できる.
2週 クヌース・モーリス・プラットのアルゴリズム 5. ストリングマッチングについて説明できる.
3週 ボイヤー・ムーアのアルゴリズム 5. ストリングマッチングについて説明できる.
4週 離散フーリエ変換 6. 高速フーリエ変換について説明できる.
5週 高速フーリエ変換のアルゴリズム 6. 高速フーリエ変換について説明できる.
6週 グラフの表現,グラフの探索 7. グラフのアルゴリズムについて説明でき,実装することができる.
7週 演習 上記5~7
8週 中間試験 これまでに学習した内容を説明できる.
4thQ
9週 最小スパニング木 7. グラフのアルゴリズムについて説明でき,実装することができる.
10週 最短路 7. グラフのアルゴリズムについて説明でき,実装することができる.
11週 最大フロー 7. グラフのアルゴリズムについて説明でき,実装することができる.
12週 分割統治法 8. アルゴリズム設計の基本的技法について説明できる.
13週 動的計画法 8. アルゴリズム設計の基本的技法について説明できる.
14週 グリーディ法,分枝限定法,局所探索法と発見的アルゴリズム 8. アルゴリズム設計の基本的技法について説明できる.
15週 演習 上記7~8
16週

モデルコアカリキュラムの学習内容と到達目標

分類分野学習内容学習内容の到達目標到達レベル授業週
専門的能力分野別の専門工学情報系分野ソフトウェアアルゴリズムの概念を説明できる。4
与えられたアルゴリズムが問題を解決していく過程を説明できる。4
同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを説明できる。4
整列、探索など、基本的なアルゴリズムについて説明できる。4
時間計算量によってアルゴリズムを比較・評価できることを説明できる。4
領域計算量などによってアルゴリズムを比較・評価できることを説明できる。4
コンピュータ内部でデータを表現する方法(データ構造)にはバリエーションがあることを説明できる。4
同一の問題に対し、選択したデータ構造によってアルゴリズムが変化しうることを説明できる。4
リスト構造、スタック、キュー、木構造などの基本的なデータ構造の概念と操作を説明できる。4
リスト構造、スタック、キュー、木構造などの基本的なデータ構造を実装することができる。4
ソースプログラムを解析することにより、計算量等のさまざまな観点から評価できる。4
同じ問題を解決する複数のプログラムを計算量等の観点から比較できる。4

評価割合

試験課題相互評価態度発表その他合計
総合評価割合80200000100
配点80200000100