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

科目基礎情報

学校 大分工業高等専門学校 開講年度 令和03年度 (2021年度)
授業科目 アルゴリズムとデータ構造
科目番号 R03S420 科目区分 専門 / 必修
授業形態 授業 単位の種別と単位数 学修単位: 2
開設学科 情報工学科 対象学年 4
開設期 後期 週時間数 2
教科書/教材 藤原暁宏 著「アルゴリズムとデータ構造(第 2 版)」森北出版
担当教員 石川 秀大

到達目標

(1) 授業内容を理解し,問題解決に適したアルゴリズムやデータ構造を選択できる.(定期試験)
(2) 各種アルゴリズムの仕組みについて理解するとともに,プログラムを実装できる. (定期試験・レポート)
(3) 演習を通して理解を深めるとともに,自主的かつ継続的な学習ができる.(定期試験・レポート)

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
評価項目1問題解決に適したアルゴリズムやデータ構造をいくつか選択できる.問題解決に適したアルゴリズムやデータ構造を1つ選択できる問題解決に適したアルゴリズムやデータ構造を適切に選択できない
評価項目2各種アルゴリズムの仕組みについて理解するとともに,プログラムを効率よく実装できる. 各種アルゴリズムの仕組みについて理解するとともに,プログラムを実装できる. 各種アルゴリズムの仕組みについて理解できず,プログラムを実装できない.
評価項目3演習を通して理解を深めるとともに,発展的内容を自主的かつ継続的な学習ができる.演習を通して理解を深めるとともに,自主的かつ継続的な学習ができる.演習を通して理解できず,自主的かつ継続的な学習ができない.

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

学習・教育目標 (B2) 説明 閉じる
JABEE 1(2)(g) 説明 閉じる
JABEE 2.1(1)② 説明 閉じる

教育方法等

概要:
本授業では,ソフトウェア開発において重要なアルゴリズムとデータ構造について学ぶ.理論の習得だけではなく,実際にアルゴリズムをプログラミング言語を用いて実装し,ソフトウェアの開発力を養う.また,情報系資格試験に則した問題の演習を行うことにより,より深い理解と応用力を身につける.
(科目情報)
教育プログラム 第1学年 ◎科目
授業の進め方・方法:
アルゴリズムを説明した後に、関連した問題を考えたり、実際にプログラミングを行って理解を深める.

(事前学習)
CおよびC++を復習しておくことが望ましい.
注意点:
(履修上の注意)本科目は学修単位であり,2単位の修得には授業時間外の学修等とあわせて90単位時間の学修が必要な科目である.本科目では授業時間外の学修として課題を課す.
重要な項目を学習した後に,内容の理解を問う質問をするので,授業を良く聞いて理解に努めること.
(自学上の注意)特になし

評価

(総合評価)
達成目標の(1)~(3)について,2回の定期試験で評価する.
総合評価 = 定期試験×0.8 + 課題×0.2
課題提出について,複数の課題を与え,平均点をレポート点とする.
(単位修得の条件)
総合評価が60点を超えること.
全課題の60パーセント以上を提出すること.
(再試験について)
再試験は,実施しない.

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

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

授業計画

授業内容 週ごとの到達目標
後期
3rdQ
1週 アルゴリズムの基礎(アルゴリズムの評価基準/計算量の漸近的評価)
アルゴリズムの基本データ構造
ソフトウェアにおける,アルゴリズムの
重要性を理解する.アルゴリズムの評価方法,および各種データ構造の利点と欠点を理解する.基本的なデータ構造について理解する
2週 アルゴリズムにおける基本概念(木構造)
木構造を理解し,プログラム作成において,最適のデータ構造を選択できるようになる
3週 アルゴリズムにおける基本概念(再帰) 再帰を理解し,プログラム作成において,最適のデータ構造を選択できるようになる
4週 データの探索 探索アルゴリズムについて理解する
5週 ソートアルゴリズム(挿入ソート) 挿入ソートアルゴリズムを通して,アルゴリズムの考え方,コーディング法を習得する
6週 ソートアルゴリズム(ヒープソート) ヒープソートアルゴリズムを通して,アルゴリズムの考え方,コーディング法を習得する
7週 ソートアルゴリズム(クイックソート) クイックソートアルゴリズムを通して,アルゴリズムの考え方,コーディング法を習得する
8週 前半のまとめ
4thQ
9週 後期中間試験
10週 後期中間試験の解答と解説
設計手法 1(分割統治法)
設計手法 2(グリーディ法)
設計手法 3(動的計画法)
アルゴリズムの設計手法(分割統治法,グリーティ法,動的計画法)について理解する
11週 設計手法4(バックトラック)
設計手法5(分枝限定)
アルゴリズムの設計手法(バックトラック法,分枝限定法)について理解する
12週 グラフアルゴリズム 計算機上でのグラフ表現を習得し,グラフアルゴリズムの基本を理解する
13週 文字列照合アルゴリズム 文章中から,任意の文字列を探索する文字列探索アルゴリズムを理解する
14週 アルゴリズムの限界(問題のクラス)
後半まとめ
ある種の問題の本質的な計算困難さについて理解する
15週 後期期末試験
16週 後期期末試験の解答と解説

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

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

評価割合

試験課題合計
総合評価割合8020100
基礎的能力201030
専門的能力601070