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

科目基礎情報

学校 和歌山工業高等専門学校 開講年度 令和02年度 (2020年度)
授業科目 アルゴリズムとデータ構造
科目番号 0047 科目区分 専門 / 必修
授業形態 授業 単位の種別と単位数 履修単位: 2
開設学科 電気情報工学科 対象学年 3
開設期 通年 週時間数 2
教科書/教材 [教科書]田中秀和「アルゴリズムとデータ構造」理工図書
担当教員 謝 孟春

到達目標

1.アルゴリズムの概念を理解し、与えられた問題に対してプログラムを作ることができる。
2.同じ問題に対して複数のアルゴリズムが存在することを理解し、計算量によってそれらを比較することができる。
3.整列、探索など、基本的なアルゴリズムについて説明でき、基本的なプログラムを作ることができる。
4.リスト構造、スタック、キュー、木構造などの基本的なデータ構造の概念と操作を説明できる。

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
アルゴリズムの概念を理解し、与えられた問題に対してプログラムを作ることができる。アルゴリズムの概念を理解し、自ら工夫してプログラムを作りあげることができる。アルゴリズムの基本的な概念を理解し、具体的に手順を示すとプログラムを作ることができる。アルゴリズムの基本的な概念を理解していない。または、簡単なアルゴリズムを実現するプログラムが自力で書くことができない。
同じ問題に対して複数のアルゴリズムが存在することを理解し、計算量によってそれらを比較することができる。アルゴリズムの計算量を数式で理論的に展開し、複数のアルゴリズムの比較を行うことができる。単純なソートアルゴリズム及びプログラムを実装できるアルゴリズムに関して計算量の基本を理解し、それによってアルゴリズムの比較が可能であることを理解している。計算量の概念が理解できない。または、計算量の基本の内容を理解することができない。
整列、探索など、基本的なアルゴリズムについて説明でき、基本的なプログラムを作ることができる。整列、探索など、基本的なアルゴリズムについて説明でき、自ら工夫してプログラムを作ることができる。整列、探索など、基本的なアルゴリズムについて説明でき、具体的な手順を示すとプログラムを作ることができる。整列、探索など、基本的なアルゴリズムについて説明できない。または、基本的なプログラムを作ることができない。
リスト構造、スタック、キュー、木構造などの基本的なデータ構造の概念と操作を説明できる。リスト構造、スタック、キュー、木構造などの基本的なデータ構造について説明ができ、自ら工夫してデータ構造操作のプログラムを作ることができる。リスト構造、スタック、キュー、木構造などの基本的なデータ構造について説明ができ、具体的な手順を示すとデータ構造操作のプログラムを作ることができる。リスト構造、スタック、キュー、木構造などの基本的なデータ構造について説明ができない。または、基本的なデータ構造操作のプログラムを作ることができない。

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

C-1 説明 閉じる

教育方法等

概要:
1,2年に学習した「情報処理」の応用として、ソートと探索のアルゴリズムを学習する。バブルソート、単純挿入法、クイックソートなどのソートアルゴリズムと、線形探索、2分探索の探索アルゴリズムの基本を説明した後、演習を行う。さらに、リスト、スタック、キュー、木構造などのデータ構造を説明し、それぞれのデータ構造に実現するための基本操作を習得する。
授業の進め方・方法:
講義を中心として確認課題と総合演習を適宜実施する
注意点:
事前学習:教科書の予定範囲を読み、意味が分からない言葉や記号をメモすること。事後学習:授業で学習した内容に関する教科書や配布した資料を復習し、理解を確認すること。

授業計画

授業内容 週ごとの到達目標
前期
1stQ
1週 アルゴリズムと時間計算量 アルゴリズムの概念を説明できる。時間計算量によってアルゴリズムを比較・評価できることを説明できる。
2週 領域計算量
バブルソート
領域計算量によってアルゴリズムを比較・評価できることを説明できる。バブルという整列の基本的なアルゴリズムについて説明できる。
3週 選択法ソート 選択法ソートという整列の基本的なアルゴリズムについて説明できる
4週 挿入法ソート・シェルソート
挿入法ソート・シェーカーソートという整列の基本的なアルゴリズムについて説明できる。
5週 再帰の考え方 再帰の考え方を説明できる
6週 クイックソート クイックソートという整列の基本的なアルゴリズムについて説明できる。
7週 演習1
整列の基本的なアルゴリズムを実装できる
8週 線形探索・乱数の生成
線形探索という探索の基本的なアルゴリズムについて説明できる。
2ndQ
9週 2分探索 2分探索という探索の基本的なアルゴリズムについて説明できる
10週 数値計算の誤差・級数の計算 コンピュータ上で数値計算を行う際に発生する誤差の影響を説明できる
11週 2分法とニュートン法 コンピュータ向けの主な数値計算アルゴリズムの概要や特徴を説明できる
12週 演習2 基本的な探索や数値計算アルゴリズムを実装できる
13週 システム設計のプロセス システム設計には要求の振り分けやシステムの構成の決定、システム設計のプロセスを説明できる
14週 ER図・DFD ビジネスフロー分析手法について説明できる
15週 期末試験 期末試験
16週 総復習と試験解説 間違ったところについて修正できる
後期
3rdQ
1週 データ構造 データ構造にはバリエーションがあることが説明できる
2週 ポインタ ポインタの定義、ポインター変数の宣言、ポインタ演算子について説明ができる
3週 構造体 構造体の定義、構造体変数の宣言、代入、参照の説明ができる
4週 リスト構造 リスト構造の概念を説明できる
5週 リスト構造の探索・挿入 リスト構造の操作を説明できる
6週 リスト構造の削除・ポインタによるリスト構造の操作 リスト構造の操作を説明できる
7週 演習3 配列・構造体・リスト構造を実装することができる
8週 スタックの基本・配列によるスタック
スタックの概念を説明できる
4thQ
9週 リストによるスタック スタックの操作を説明できる
10週 キュー・配列によるキュー キューの概念を説明できる
11週 リストによるキューの操作
キューの操作を説明できる
12週 木構造・二分木の作成 木構造の概念を説明できる
13週 二分木の探索・走査 木構造の操作を説明できる
14週 演習4 スタック、キュー、木構造の基本的なデータ構造を実装することができる。同一の問題に対し、選択したデータ構造によって、アルゴリズムが変化しうることが説明できる
15週 期末試験 期末試験
16週 総復習と試験解説 間違ったところについて修正できる

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

分類分野学習内容学習内容の到達目標到達レベル授業週
基礎的能力工学基礎情報リテラシー情報リテラシー同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを知っている。4前1,前2
与えられた基本的な問題を解くための適切なアルゴリズムを構築することができる。4前3,前4
任意のプログラミング言語を用いて、構築したアルゴリズムを実装できる。4前3,前4
専門的能力分野別の専門工学情報系分野ソフトウェアアルゴリズムの概念を説明できる。4前1
与えられたアルゴリズムが問題を解決していく過程を説明できる。4前1
同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを説明できる。4前1
整列、探索など、基本的なアルゴリズムについて説明できる。4前2,前3,前4,前6,前8,前9
時間計算量によってアルゴリズムを比較・評価できることを説明できる。4前1
領域計算量などによってアルゴリズムを比較・評価できることを説明できる。4前2
コンピュータ内部でデータを表現する方法(データ構造)にはバリエーションがあることを説明できる。4後1
同一の問題に対し、選択したデータ構造によってアルゴリズムが変化しうることを説明できる。4後1,後15
リスト構造、スタック、キュー、木構造などの基本的なデータ構造の概念と操作を説明できる。4後4,後5,後6,後8,後9,後11,後12,後14
リスト構造、スタック、キュー、木構造などの基本的なデータ構造を実装することができる。4後6,後7,後9,後11,後15
情報数学・情報理論コンピュータ向けの主要な数値計算アルゴリズムの概要や特徴を説明できる。4

評価割合

期末試験総合演習確認課題合計
総合評価割合502030100
配点502030100