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

科目基礎情報

学校 阿南工業高等専門学校 開講年度 令和05年度 (2023年度)
授業科目 データ構造とアルゴリズム
科目番号 1712B01 科目区分 専門 / 必修
授業形態 授業 単位の種別と単位数 履修単位: 2
開設学科 情報コース 対象学年 2
開設期 通年 週時間数 2
教科書/教材 アルゴリズムを、はじめよう(伊藤静香、インプレス)
担当教員 太田 健吾

到達目標

1.アルゴリズムの概念を論理的に説明できる。
2.整列、探索などのアルゴリズムについて説明できる。
3.コンピュータ内部でデータを表現するための様々な方法(データ構造)を理解し、説明できる。

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安最低限の到達レベルの目安
到達目標1アルゴリズムの概念を理解し、各アルゴリズムをフローチャートやプログラムで実現できる。アルゴリズムの概念を理解し、論理的に説明できる。アルゴリズムの概念について論理的に説明できない。
到達目標2整列・探索等のアルゴリズムを論理的に説明でき、それらのアルゴリズムを適切に利用できる。整列・探索等のアルゴリズムを論理的に説明できる。整列・探索等のアルゴリズムを論理的に説明できない。
到達目標3様々なデータ構造の性質を理解し、プログラミングで適切に利用できる。様々なデータ構造の性質を理解し、説明できる。様々なデータ構造の性質を説明できない。

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

教育方法等

概要:
基本的なアルゴリズムとデータ構造を学び、プログラミング言語を用いて実装することを通して、ソフトウェアエンジニアに必須の論理的思考能力、および問題解決能力を身に付ける。
授業の進め方・方法:
注意点:
アルゴリズムの考え方を重視するので、プログラミング言語は要点のみの説明となる。理解できない点は積極的に質問すること。授業中に課される課題や小テストを通じて、理解を深めること。

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

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

授業計画

授業内容 週ごとの到達目標
前期
1stQ
1週 アルゴリズムの基本 アルゴリズムの概念やプログラミングの流れを説明できる。
2週 アルゴリズムの基本 アルゴリズムの基本形や構造化定理を説明できる。
3週 フローチャートの基本 フローチャートを使用し、変数を用いたアルゴリズムを図的に表現できる。
4週 フローチャートの基本 フローチャートを使用し、条件分岐やループを含むアルゴリズムを図的に表現できる。
5週 配列 フローチャートを使用し、配列を用いた基本的なアルゴリズムを図的に表現できる。
6週 配列 フローチャートを使用し、配列を用いた応用的なアルゴリズムを図的に表現できる。
7週 【前期中間試験】
8週 スタック スタックのデータ構造を理解し、説明できる。
2ndQ
9週 キュー キューのデータ構造を理解し、説明できる。
10週 木構造 木構造の概念を理解し、説明できる。
11週 二分探索木 二分探索木のデータ構造を理解し、説明できる。
12週 スタックとキューの実装 スタックとキューの実装方法を理解し、説明できる。
13週 素数を求めるアルゴリズム 素数を求めるアルゴリズムを理解し、説明できる。
14週 最大公約数を求めるアルゴリズム 最大公約数を求めるアルゴリズムを理解し、説明できる。
15週 素因数分解のアルゴリズム 素因数分解のアルゴリズムを理解し、説明できる。
16週 【答案返却】
後期
3rdQ
1週 線形探索法 線形探索法のアルゴリズムを理解し、説明できる。
2週 二分探索法 二分探索法のアルゴリズムを理解し、説明できる。
3週 ハッシュ探索法 ハッシュ探索法のアルゴリズムを理解し、説明できる。
4週 ソートの基本 ソートのアルゴリズムの基本を理解し、説明できる。
5週 選択ソート 選択ソートのアルゴリズムを理解し、説明できる。
6週 バブルソート バブルソートのアルゴリズムを理解し、説明できる。
7週 挿入ソート 挿入ソートのアルゴリズムを理解し、説明できる。
8週 【後期中間試験】
4thQ
9週 クイックソート クイックソートのアルゴリズムを理解し、説明できる。
10週 クイックソート クイックソートのアルゴリズムを理解し、説明できる。
11週 関数と再帰 関数と再帰の概念を理解し、説明できる。
12週 ハノイの塔 ハノイの塔を解くアルゴリズムを理解し、説明できる。
13週 モンテカルロ法 モンテカルロ法のアルゴリズムを理解し、説明できる。
14週 二分法 二分法のアルゴリズムを理解し、説明できる。
15週 ニュートン法 ニュートン法のアルゴリズムを理解し、説明できる。
16週 【答案返却】

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

分類分野学習内容学習内容の到達目標到達レベル授業週
基礎的能力工学基礎情報リテラシー情報リテラシー同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを知っている。3前3,前4
与えられた基本的な問題を解くための適切なアルゴリズムを構築することができる。3前3,前4
任意のプログラミング言語を用いて、構築したアルゴリズムを実装できる。3後9,後10
専門的能力分野別の専門工学情報系分野ソフトウェアアルゴリズムの概念を説明できる。4前1,前2
与えられたアルゴリズムが問題を解決していく過程を説明できる。4前3,前4
同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを説明できる。4前5,前6,前8,前9,前10
整列、探索など、基本的なアルゴリズムについて説明できる。4後1,後2,後3,後4
時間計算量によってアルゴリズムを比較・評価できることを説明できる。4後1,後2,後3,後4
領域計算量などによってアルゴリズムを比較・評価できることを説明できる。4後1,後2,後3,後4
コンピュータ内部でデータを表現する方法(データ構造)にはバリエーションがあることを説明できる。4前5,前6
同一の問題に対し、選択したデータ構造によってアルゴリズムが変化しうることを説明できる。4前5,前6
リスト構造、スタック、キュー、木構造などの基本的なデータ構造の概念と操作を説明できる。4前5,前6
リスト構造、スタック、キュー、木構造などの基本的なデータ構造を実装することができる。4前5,前6
ソフトウェアを中心としたシステム開発のプロセスを説明できる。4後9,後10
ソースプログラムを解析することにより、計算量等のさまざまな観点から評価できる。4前11,前12,前13,前14,前15,後5,後6,後7
同じ問題を解決する複数のプログラムを計算量等の観点から比較できる。4前5,前6,後5,後6,後7,後13,後14,後15
その他の学習内容少なくとも一つの具体的なコンピュータシステムについて、起動・終了やファイル操作など、基本的操作が行える。4
分野別の工学実験・実習能力情報系分野【実験・実習能力】情報系【実験・実習】ソフトウェア生成に利用される標準的なツールや環境を使い、ソースプログラムをロードモジュールに変換して実行できる。4前11,前12,前13,後5,後6,後7,後9,後10,後13,後14,後15
フローチャートなどを用いて、作成するプログラムの設計図を作成することができる。4

評価割合

試験発表相互評価態度ポートフォリオその他小テストレポート課題合計
総合評価割合70000001515100
基礎的能力3500000101055
専門的能力35000005545
分野横断的能力000000000