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

科目基礎情報

学校 東京工業高等専門学校 開講年度 平成31年度 (2019年度)
授業科目 アルゴリズムとデータ構造Ⅰ
科目番号 0096 科目区分 専門 / 必修
授業形態 講義 単位の種別と単位数 履修単位: 1
開設学科 情報工学科 対象学年 3
開設期 前期 週時間数 2
教科書/教材 Web教材使用
担当教員 鈴木 雅人

到達目標

アルゴリズムの概念を理解し,与えられた問題に対してプログラムを作ることができる.
同じ問題に対して複数のアルゴリズムが存在することを理解し,計算量によってそれらを比較することができる.
基本的なデータ構造を理解し説明できる.またそれらのデータ構造を用いた基本的なプログラムを作ることができる.

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
アルゴリズムの概念を理解し,与えられた問題に対してプログラムを作ることができるアルゴリズムの概念を理解し,自ら工夫してプログラムを作りあげることができる.アルゴリズムの概念を理解し,具体的に手順を示すとプログラムを作ることができるアルゴリズムの概念を理解していない.または,簡単なアルゴリズムを実現するプログラムが自力で書くことができない.
同じ問題に対して複数のアルゴリズムが存在することを理解し,計算量によってそれらを比較することができるアルゴリズムの計算量を数式で理論的に展開し,複数のアルゴリズムの比較を行うことができる.幾つかのアルゴリズムに関して計算量の議論を理解し,それによってアルゴリズムの比較が可能であることを理解している.計算量の概念が理解できない.または,計算量の議論の内容を理解することができない.
基本的なデータ構造を理解し説明できる.またそれらのデータ構造を用いた基本的なプログラムを作ることができる.様々なデータ構造を自ら理解し,それらのデータ構造を用いた簡単なプログラムを自力で作ることができる.与えられたデータ構造を理解し,それらを用いた簡単なプログラムを詳細な解説を見ながら作ることができる.与えられたデータ構造を理解することができない.または,基本的なデータ構造を用いた簡単なプログラムを作ることができない.

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

教育方法等

概要:
基礎事項として,ポインタおよび再帰について学習する。次にデータの表現方法や効率の良いアルゴリズムの実装能力を身につけるため,基本的かつ代表的なアルゴリズムとデータ構造について学習する.
授業の進め方・方法:
原則として,毎回の授業で課題の説明を行い,残りの時間はプログラムを作成する演習時間とする.ただし,計算量の解説などの一部の項目では,座学中心の授業を行う.
注意点:
原則として授業の後半でC言語によるプログラミング演習を行なう.課題が授業時間内に終わらないことも予想されるので,自宅にプログラム開発環境を構築することが望ましい.また本科目の単位を修得するためには,全ての課題を期限内に提出することが必要条件となるので注意すること.

授業計画

授業内容 週ごとの到達目標
前期
1stQ
1週 ガイダンス
データー構造とは
アルゴリズムとは
データ構造およびアルゴリズムの概要を理解できる
2週 単純ソート(1)
バブルソート・選択ソート
アルゴリズムの解説と実装
バブルソート・選択ソートのアルゴリズムを理解し実装できる.
3週 単純ソート(1)
選択ソート・挿入ソート
アルゴリズムの解説と実装
選択ソート・挿入ソートのアルゴリズムを理解し実装できる.
4週 シェーカーソート
アルゴリズムの解説と実装
シェーカーソートのアルゴリズムを理解し実装できる.
5週 シェルソート
アルゴリズムの解説と実装
シェルソートのアルゴリズムを理解し実装できる.
6週 プログラミング演習
第5週までのプログラミング課題を引き続き作成する.
単純ソート・シェーカーソート・シェルソートのアルゴリズムを実行効率の面で比較できる.
7週 ポインタ
C言語のポインタの解説
C言語におけるポインタの概念を理解し使うことができる.
8週 再帰呼び出し
再帰関数の解説と簡単な例題プログラムの演習
再帰呼び出しの概念を理解し,簡単な再帰呼び出しプログラムが実装できる.
2ndQ
9週 クイックソート
アルゴリズムの解説と実装
クイックソートのアルゴリズムを理解し実装できる.
10週 計算量(1)
単純ソートの計算量の解説
計算量の概念を理解し,単純ソートの計算量を導き出すことができる.
11週 計算量(2)
クイックソートの計算量の解説
クイックソートの計算量を導き出すことができる.
12週 マージソート
アルゴリズムの解説と実装
マージソートのアルゴリズムを理解し実装できる.
13週 ヒープソート
アルゴリズムの解説と実装
ヒープソートのアルゴリズムを理解し実装できる.
14週 単純探索と二分探索
アルゴリズムの解説と実装
単純探索・二分探索のアルゴリズムを理解し実装できる.
15週 計算量(3)
二分探索の計算量の解説
二分探索の計算量を導き出すことができる.
16週

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

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

評価割合

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