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

科目基礎情報

学校 津山工業高等専門学校 開講年度 平成31年度 (2019年度)
授業科目 アルゴリズムとデータ構造
科目番号 0054 科目区分 専門 / 必修
授業形態 講義 単位の種別と単位数 履修単位: 2
開設学科 総合理工学科(情報システム系) 対象学年 3
開設期 通年 週時間数 2
教科書/教材 教科書:浅野哲夫 他「 アルゴリズム論」(オーム社), 参考書:紀平 拓男,春日 伸弥「プログラミングの宝箱 アルゴリズムとデータ構造 第2版」(ソフトバンククリエイティブ)
担当教員 菊地 洋右

到達目標

学習目的:代表的なアルゴリズムやデータ構造の仕組みについて説明できる,または説明を読めばその名称が答えられる。アルゴリズムの効率を考える際に重要となる時間計算量などの基本的概念や用語を説明できる。

到達目標
1.アルゴリズムとは何かを説明できる。
2.ソート,探索に関する代表的なアルゴリズムを説明できる。
3.スタック,キュー,二分木などのデータ構造を説明できる。
4.情報のグラフ表現を使える。
5.文字列検索アルゴリズムを説明できる。

ルーブリック

不可
評価項目1計算量の表記とその定義を何も見ずに書くことができ,その意味を説明できる。計算量の表記とその定義を,ノートを見ながら書くことができ,その意味を説明できる。計算量の表記とその定義を,ノートを見ながら書くことができる。計算量の表記とその定義を知らない。
評価項目2ソート,探索のアルゴリズムを実装できる。かつそのプログラムに不備があった場合に修正できる。ソート,探索のアルゴリズムを実装できる。ソート,探索に関する代表的なアルゴリズムアルゴリズムを説明できる。ソート,探索に関する代表的なアルゴリズムアルゴリズムを説明できない。
評価項目3スタック,キュー,2分木などのデータ構造を必要に応じて利用したプログラムが実装できる。スタック,キュー,2分木などのデータ構造を利用したプログラムが実装できる。スタック,キュー,2分岐などのデータ構造を説明できる。スタック,キュー,2分岐などのデータ構造を説明できない。
評価項目4グラフ構造を用いたアルゴリズムを説明でき,その計算量を求めることができる。グラフ構造を用いたアルゴリズムを説明できる。情報のグラフ表現を使える。グラフ構造を知らない。
評価項目5文字列検索アルゴリズムを3つ以上知っていて、それらについて説明できる。文字列検索アルゴリズムを2つ以上知っていて,それらについて説明できる。文字列検索アルゴリズムを1つ以上知っていて,それらについて説明できる。文字列検索アルゴリズムを知らない。

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

教育方法等

概要:
一般・専門の別:専門
学習の分野:情報システム・プログラミング・ネットワーク

必修・必履修・履修選択・選択の別:必履修

基礎となる学問分野:総合系/情報学/計算基盤/ソフトウェア

学習・教育目標との関連:本科目は総合理工学科学習・教育目標「③基盤となる専門性の深化」に相当する科目である。

技術者教育プログラムとの関連:本科目が主体とする学習・教育目標は「(A)技術に関する基礎知識の深化,A-2:「電気・電子」,「情報・制御」に関する専門技術分野の知識を修得し,説明できること」である。

授業の概要:コンピュータを使って問題解決をする場合,使用するアルゴリズムとデータ構造が異なると問題解決の効率が違ってくる。本科目では,これらの選択能力や設計能力の基礎を修得するため,代表的なアルゴリズムとデータ構造を題材にそれらの仕組み等を学習する。
授業の進め方・方法:
授業の方法:板書を中心に授業を進めるが,できるだけ学生に質問し,学生の理解度を確かめながら授業を進める。また学生による発表も取り入れる。理解が深まるよう,演習などを課す。

成績評価方法:1. 4回の定期試験の結果に重みを付け評価(70%)と小テスト(30%)による評価、2. 4回の定期試験の結果に重みを付けた評価(100%)を行い、1,2の最大値により評価する。再試験は原則行わない。ただし,定期試験の結果をもって単位認定を正当に結論できないと判断した場合には再試験を行う。定期試験の結果に対する重みはレポートの内容,授業発表の内容による。ルーブリックに基づいて定期試験を作成するが,定期試験がルーブリックの評価項目を必ずしも網羅しているとは限らない。
注意点:
履修のアドバイス:本科目はこれまでに履修してきた数学やプログラミングに関する科目と深く関連している。本科目で学習した内容を積極的に活用したプログラムを書くことでより理解が深まる。

基礎科目:総合理工基礎(1年),プログラミング基礎(2)

関連科目:データベース(5年),プログラミング応用(4),情報数理(4)

受講上のアドバイス:授業開始前に行う出席確認に遅れた者は遅刻として扱う。遅刻は1時限分の欠課として扱う。授業開始から50分を経過しての遅刻については2時限分の欠課として扱う。BlackBoardに授業の進行状況を適宜掲載するので参考にすること。

授業計画

授業内容 週ごとの到達目標
前期
1stQ
1週 ガイダンス〔科目の概要,目的,評価方法,注意事項等〕 本科目の位置づけを理解する。
2週 アルゴリズムと計算量 1 実社会の問題を数理モデルとして定式化できる例を挙げられる。
3週 基本的なデータ構造 1 問題を数理モデルとして定式化するときにデータ構造を2つ以上候補として挙げられる。
4週 基本的なデータ構造 2 問題を数理モデルとして定式化するときに適切なデータ構造を設計できる。
5週 演習 基本的なデータ構造での各種処理の計算時間を説明できる。
6週 ソート・アルゴリズ 1 バブルソート、インサーションソートを説明できる。
7週 ソート・アルゴリズ 2 クイックソート、マージソートなどを説明できる。
8週 ソート・アルゴリズ 3 バケットソートを説明できる。
2ndQ
9週 (前期中間試験) 自分の知識を確認する。
10週 答案返却と解説,演習 自分の知識で不足している箇所を認識し、改善する。
11週 ソートの計算量 ソートの計算量について説明できる。
12週 演習 自分の知識を確認する。
13週 木のデータ構造 1 2分探索木,平衡木について説明できる。
14週 木のデータ構造 2 B木について説明できる。
15週 (前期末試験) 自分の知識を確認する。
16週 前期末試験の答案返却と試験解説 自分の知識で不足している箇所を認識し、改善する。
後期
3rdQ
1週 グラフ・アルゴリズム 1 グラフを数理モデルとして使うことができる。グラフのデータ構造を説明できる。
2週 グラフ・アルゴリズム 2 深さ優先探索,優先探索について説明できる。
3週 演習 自分の知識を確認する。
4週 グラフ・アルゴリズム 3 最小全域木を求めるアルゴリズム
5週 グラフ・アルゴリズム 4 最短経路問題を解くアルゴリズム
6週 グラフ・アルゴリズム 5 ネットワークフローを解くアルゴリズム
7週 グラフ・アルゴリズム 6 ネットワークフローを解くアルゴリズムの応用
8週 演習 自分の知識を確認する。
4thQ
9週 (後期中間試験) 自分の知識を確認する。
10週 答案返却と解説,演習 自分の知識で不足している箇所を認識し、改善する。
11週 文字列検索アルゴリズム 1 ラビン-カープ法について説明できる。
12週 文字列検索アルゴリズム 2 クヌース-モリス-プラッツ法について説明できる。
13週 文字列検索アルゴリズム 3 ボイヤー-ムーア法について説明できる。
14週 演習 自分の知識を確認する。
15週 (後期末試験) 自分の知識を確認する。
16週 後期末試験の答案返却と試験解説 自分の知識で不足している箇所を認識し、改善する。

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

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

評価割合

試験発表相互評価自己評価課題小テスト合計
総合評価割合70000030100
基礎的能力0000000
専門的能力70000030100
分野横断的能力0000000