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

科目基礎情報

学校 石川工業高等専門学校 開講年度 平成30年度 (2018年度)
授業科目 アルゴリズムとデータ構造
科目番号 17040 科目区分 専門 / 必修
授業形態 講義 単位の種別と単位数 履修単位: 2
開設学科 電子情報工学科 対象学年 3
開設期 通年 週時間数 2
教科書/教材 藤原暁宏、「アルゴリズムとデータ構造 第2版」、森北出版 / 関連資料を適宜配布する
担当教員 川除 佳和

到達目標

1.アルゴリズムの概念と評価基準(計算量)を説明できる。
2.配列、リスト、スタック、キューを説明できる。
3.木、再帰処理を説明できる。
4.探索アルゴリズムを説明できる。
5.ソートアルゴリズムを説明できる。
6.分割統治法、グリーディー法、バックトラック法、分岐限定法を説明できる。
7.グラフを格納するデータ構造および最短経路問題を説明できる。
8.文字列照合アルゴリズムを説明できる。
9.アルゴリズムの限界を概説できる。

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
到達目標 項目 1, 2, 3, 4, 5, 9アルゴリズムの概念と評価基準を説明でき、基本データ構造を利用した探索、整列アルゴリズムを実装できる。アルゴリズムの概念と評価基準、および、基本データ構造を利用した探索、整列アルゴリズムを理解し、説明できる。アルゴリズムの概念と評価基準、および、基本データ構造を利用した探索、整列アルゴリズムを説明できない。
到達目標 項目 6各種アルゴリズムの設計手法を理解し、その具体例を説明できる。各種アルゴリズムの設計手法を理解し、説明できる。各種アルゴリズムの設計手法を説明できない。
到達目標 項目 7, 8グラフを用いた探索問題、および、文字列照合アルゴリズムを理解・説明・実装できる。グラフを用いた探索問題、および、文字列照合アルゴリズムを理解・説明できる。グラフを用いた探索問題、および、文字列照合アルゴリズムを説明できない。

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

本科学習目標 1 説明 閉じる
本科学習目標 2 説明 閉じる

教育方法等

概要:
本講義は効率の良いアルゴリズムの構築を目的とする。そのため、各々の優れたアルゴリズムの考え方や、効率を解析するための方法論を解説し、情報系技術者として必要な基礎学力を身につけることを目標とする。アルゴリズムの課題の解決に取り組み、アルゴリズムの表記方法について学ぶ。
授業の進め方・方法:
到達目標の達成度を確認するために、随時演習課題を与える。
【関連科目】プログラミングⅠ、プログラミングⅡ
注意点:
計算機による演習を行うことがあるので、指示があった場合にはノートPCを持参すること。
【評価方法・評価基準】
中間試験、前期末試験、学年末試験を実施する。
前期末:中間試験(40%)、期末試験(40%)、課題(20%)
学年末:年4回の定期試験の総合(80%)、課題(20%)
成績の評価基準として50点以上を合格とする。

授業計画

授業内容 週ごとの到達目標
前期
1stQ
1週 アルゴリズムの基礎(1) - アルゴリズムとは? アルゴリズムの概念を説明できる。
2週 アルゴリズムの基礎(2) - アルゴリズムの評価基準 与えられたアルゴリズムが問題を解決していく過程を説明できる。
3週 計算量の漸近的評価(1) 同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることや、時間計算量や領域計算量などによってアルゴリズムを比較・評価できることを理解している。
4週 計算量の漸近的評価(2) 同じ問題を解決する複数のプログラムを計算量等の観点から比較でき、ソースプログラムを解析することにより、計算量等のさまざまな観点から評価できる。
5週 基本データ構造(1) - 配列、連結リスト 配列、リスト構造の基本的なデータ構造の概念と操作を説明できる。
6週 基本データ構造(2) - スタック、キュー スタック、キューの基本的なデータ構造の概念と操作を説明できる。
7週 計算機演習 配列、連結リスト、スタック、キューのデータ構造を扱うソースプログラムを記述でき、要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを設計できる。
8週 基本データ構造(3) - 木
木の基本的なデータ構造の概念と操作を説明できる。
2ndQ
9週 基本データ構造(4) - 再帰 再帰処理の概念を説明できる。
10週 計算機演習 木のデータ構造、および、再帰処理を扱うソースプログラムを記述でき、要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを設計できる。
11週 データの探索(1) - 探索の定義とアルゴリズム 探索アルゴリズムの概念を説明できる。
12週 データの探索(2) - 線形探索、2分探索 線形探索、2分探索のアルゴリズムについて説明できる。
13週 データの探索(3) - ハッシュ法 ハッシュ法のアルゴリズムについて説明できる。
14週 計算機演習
線形探索、2分探索、ハッシュ法を扱うソースプログラムを記述でき、要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを設計できる。
15週 前期復習
16週
後期
3rdQ
1週 ソートアルゴリズム(1) - ソートの考え方、挿入ソート ソート(整列)アルゴリズムの概念を説明できる。
2週 ソートアルゴリズム(2) - 選択ソート、交換ソート、安定性について 選択ソート、交換ソートのアルゴリズムの概念、および、ソートアルゴリズムの安定性について説明できる。
3週 ソートアルゴリズム(3) - ヒープソート ヒープソートのアルゴリズムについて説明できる。
4週 ソートアルゴリズム(4) - クイックソート クイックソートのアルゴリズムについて説明できる。
5週 アルゴリズムの設計手法(1) - 分割統治法、グリーディー法 アルゴリズムの設計手法である分割統治法、グリーディー法について説明できる。
6週 アルゴリズムの設計手法(2) - 動的計画法 アルゴリズムの設計手法である動的計画法について説明できる。
7週 計算機演習 分割統治統治法、グリーディー法、動的計画法を扱うソースプログラムを記述でき、要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを設計できる。
8週 アルゴリズムの設計手法(3) - バックトラック法、分岐限定法 アルゴリズムの設計手法であるバックトラック法、分枝限定法について説明できる。
4thQ
9週 グラフアルゴリズム(1) - グラフとは? グラフアルゴリズムについて説明できる。
10週 グラフアルゴリズム(2) - 最短経路問題
グラフを利用した最短経路問題について説明できる。
11週 文字列照合(1) - 文字列照合の基本アルゴリズム 文字列照合の基本アルゴリズムについて説明できる。
12週 文字列照合(2) - ボイヤー・ムーア法 文字列照合におけるボイヤー・ムーア法について説明できる。
13週 アルゴリズムの限界 アルゴリズムの計算量の限界について概念を説明できる。
14週 計算機演習 グラフアルゴリズム、文字列照合を扱うソースプログラムを記述でき、要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを設計できる。
15週 後期復習
16週

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

分類分野学習内容学習内容の到達目標到達レベル授業週
専門的能力分野別の専門工学情報系分野プログラミング代入や演算子の概念を理解し、式を記述できる。3
プロシージャ(または、関数、サブルーチンなど)の概念を理解し、これらを含むプログラムを記述できる。3
与えられた問題に対して、それを解決するためのソースプログラムを記述できる。3
ソフトウェア生成に必要なツールを使い、ソースプログラムをロードモジュールに変換して実行できる。3
主要な言語処理プロセッサの種類と特徴を説明できる。2
ソフトウェア開発に利用する標準的なツールの種類と機能を説明できる。2
プログラミング言語は計算モデルによって分類されることを説明できる。1
主要な計算モデルを説明できる。1
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを設計できる。4
ソフトウェアアルゴリズムの概念を説明できる。4
与えられたアルゴリズムが問題を解決していく過程を説明できる。4
同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを説明できる。4
整列、探索など、基本的なアルゴリズムについて説明できる。4
コンピュータ内部でデータを表現する方法(データ構造)にはバリエーションがあることを説明できる。4
同一の問題に対し、選択したデータ構造によってアルゴリズムが変化しうることを説明できる。4
リスト構造、スタック、キュー、木構造などの基本的なデータ構造の概念と操作を説明できる。4
ソースプログラムを解析することにより、計算量等のさまざまな観点から評価できる。4
同じ問題を解決する複数のプログラムを計算量等の観点から比較できる。4
計算機工学整数・小数をコンピュータのメモリ上でディジタル表現する方法を説明できる。4
基数が異なる数の間で相互に変換できる。4
基本的な論理演算を行うことができる。3
基本的な論理演算を組合わせて、論理関数を論理式として表現できる。3
論理式の簡単化の概念を説明できる。2
情報数学・情報理論コンピュータ上での数値の表現方法が誤差に関係することを説明できる。4
コンピュータ上で数値計算を行う際に発生する誤差の影響を説明できる。4
コンピュータ向けの主要な数値計算アルゴリズムの概要や特徴を説明できる。2
分野別の工学実験・実習能力情報系分野【実験・実習能力】情報系【実験・実習】与えられた問題に対してそれを解決するためのソースプログラムを、標準的な開発ツールや開発環境を利用して記述できる。4
ソフトウェア生成に利用される標準的なツールや環境を使い、ソースプログラムをロードモジュールに変換して実行できる。4

評価割合

試験発表相互評価態度ポートフォリオその他合計
総合評価割合80000200100
基礎的能力0000000
専門的能力80000200100
分野横断的能力0000000