アルゴリズム論

科目基礎情報

学校 松江工業高等専門学校 開講年度 令和05年度 (2023年度)
授業科目 アルゴリズム論
科目番号 0033 科目区分 専門 / 必履修
授業形態 授業・演習 単位の種別と単位数 学修単位: 2
開設学科 情報工学科 対象学年 4
開設期 前期 週時間数 2
教科書/教材 教員が作成した資料を使用する.
担当教員 岩澤 全規

到達目標

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

ルーブリック

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

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

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

教育方法等

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

授業の属性・履修上の区分

アクティブラーニング
ICT 利用
遠隔授業対応
実務経験のある教員による授業

授業計画

授業内容 週ごとの到達目標
前期
1stQ
1週 講義ガイダンス,データ構造とアルゴリズム
線形探索、二分探索
2週 木の探索
深さ優先探索、幅優先探索の原理・実現方法
3週 木構造(2)
二分探索木の原理・実現方法
4週 木構造(3)
AVL木
5週 木構造(4)
B木
6週 ハッシュ
オープンアドレス法、チェーン法
7週 ソート(1)
バブルソート、選択ソート、挿入ソート、シェルソートの原理・実現方法
8週 中間試験
第1回~第7回の範囲
2ndQ
9週 ソート(2)
ヒープソートの原理・実現方法
10週 ソート(3)
マージソート, クイックソートの原理・実現方法
11週 ソート(4)
バケットソート、基数ソートの原理・実現方法
12週 グラフの探索
深さ優先探索、幅優先探索の原理・実現方法
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

評価割合

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