アルゴリズム論

科目基礎情報

学校 松江工業高等専門学校 開講年度 令和02年度 (2020年度)
授業科目 アルゴリズム論
科目番号 0032 科目区分 専門 / 選択
授業形態 授業・演習 単位の種別と単位数 学修単位: 2
開設学科 情報工学科 対象学年 4
開設期 前期 週時間数 2
教科書/教材 [教科書] 定本Cプログラマのためのアルゴリズムとデータ構造, 近藤嘉雪, ソフトバンク また,教員が作成した資料を必要に応じて配布して使用する.
担当教員 李 セロン

到達目標

( 1 ) 二分探索木,平衡木,ハッシュ法,グラフ探索などのアルゴリズムの考え方やアルゴリズムの設計手法を理解し,それらを説明することができる.
( 2 ) 探索に関するアルゴリズムを,所定の時間内に実装することができる.

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
評価項目1二分探索木,平衡木,ハッシュ法,グラフ探索などのアルゴリズムの考え方やアルゴリズムの設計手法を理解し,それらを正確に説明することができる.二分探索木,平衡木,ハッシュ法,グラフ探索などのアルゴリズムの考え方やアルゴリズムの設計手法を理解し,それらを説明することができる.二分探索木,平衡木,ハッシュ法,グラフ探索などのアルゴリズムの考え方やアルゴリズムの設計手法を理解し,それらを説明することができない.
評価項目2探索に関するアルゴリズムを,所定の時間内に正確に実装することができる探索に関するアルゴリズムを,所定の時間内に実装することができる.探索に関するアルゴリズムを,所定の時間内に実装することができない.

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

学習・教育到達度目標 J2 説明 閉じる

教育方法等

概要:
 今までのプログラミング授業を通じて,C言語の基本を理解している.本科目では学習をさらに進めて,より高度なプログラミングの技術を学ぶ.3年次の「プログラミング4」に引き続き,優れたアルゴリズムとそれを実装するための技術を習得する.
 この科目では,二分探索木,平衡木,ハッシュ法,グラフ探索などのアルゴリズムの考え方を理解する.
授業の進め方・方法:
到達目標 ( 1 ) ~ ( 2 )の達成度について,
課題 50 %
小テスト 50 %
の割合で評価を行なう.60点以上を合格とする.
 演習課題の答案は,締切日までに指定の方法で提出できるかをみる.遅れた場合は日数に応じて減点する.
 原則として,再評価試験および追認試験は実施しない.
注意点:
 基本情報処理技術者試験に出題される内容が多いので,その試験対策としても十分に理解しておく.

授業計画

授業内容 週ごとの到達目標
前期
1stQ
1週 講義ガイダンス,二分木と木のなぞり
木構造とは?二分木と木のなぞり,ポーランド記法
2週 二分探索木
二分探索木の原理・実現方法
3週 平衡木(1)
AVL木の原理・実現方法
4週 平衡木(2)
B木の原理・実現方法
5週 ハッシュ法
ハッシュ法の原理,チェイン法の考え方
6週 ハッシュ法
オープンアドレス法の考え方
7週 文字列の探索
文字列の探索方法(KMP法,BM法)
8週 中間試験
第1回~第7回の範囲
2ndQ
9週 グラフの探索(1)
グラフの探索方法,深さ優先探索の実現方法
10週 グラフの探索(2)
幅優先探索の実現方法
11週 最短経路問題(1)
最短経路問題,ダイクストラ法の実現方法
12週 最短経路問題(2)
フロイド法の実現方法
13週 アルゴリズムの設計手法(1)
動的計画法の原理,実現方法
14週 アルゴリズムの設計手法(2)
グリーディ法,分枝限定法の原理
15週 期末試験
第9回~第14回の範囲
16週 まとめ
期末試験の答案返却および解説を行なう.

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

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

評価割合

課題小テスト相互評価態度ポートフォリオその他合計
総合評価割合50500000100
基礎的能力0000000
専門的能力50500000100
分野横断的能力0000000