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

Course Information

College Tsuyama College Year 2019
Course Title アルゴリズムとデータ構造
Course Code 0054 Course Category Specialized / Compulsory
Class Format Lecture Credits School Credit: 2
Department Department of Integrated Science and Technology Communication and Informations System Program Student Grade 3rd
Term Year-round Classes per Week 2
Textbook and/or Teaching Materials 教科書:浅野哲夫 他「 アルゴリズム論」(オーム社), 参考書:紀平 拓男,春日 伸弥「プログラミングの宝箱 アルゴリズムとデータ構造 第2版」(ソフトバンククリエイティブ)
Instructor KIKUCHI Yosuke

Course Objectives

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

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

Rubric

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

Assigned Department Objectives

Teaching Method

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

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

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

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

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

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

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

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

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

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

Course Plan

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

Evaluation Method and Weight (%)

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