データ構造にはバリエーションがあることを理解し,同一の問題に対し,選択したデータ構造によってアルゴリズムが変化しうることを理解できる.スタック、キューなどの基本的なデータ構造と,木構造,グラフ構造の概念と操作を説明できる.
与えられたアルゴリズムが問題を解決していく過程を説明できる.同一の問題に対し,それを解決できる複数のアルゴリズムが存在しうることを理解できる.整列,探索など基本的なアルゴリズム及び分割法,再帰法などのアルゴリズムについて説明できる.比較回数や計算量などによってアルゴリズムを比較・評価できる.
|
|
週 |
授業内容 |
週ごとの到達目標 |
前期 |
1stQ |
1週 |
ガイダンス
|
本科目の概要,授業方針,評価方法等について紹介する.
|
2週 |
アルゴリズムの重要性(アルゴリズムとは、データ構造とは) |
アルゴリズムとデータ構造の意味を理解し,プログラミングにおけるその重要性が説明できる.
|
3週 |
Python言語の使い方 |
Python言語の操作ができ,それを用いて簡単なプログラムを作成できる.
|
4週 |
アルゴリズムを表現する方法(フローチャート、疑似コード) |
アルゴリズムを,フローチャートや疑似コードで表現することができる.
|
5週 |
アルゴリズムを比べる方法(選択ソート) |
選択ソートアルゴリズムについて理解でき,プログラムが組める.また,そのアルゴリズムの計算回数の評価ができる.
|
6週 |
アルゴリズムを思いつく方法(挿入ソートとバケットソート) |
挿入ソートとバケットソートについて理解でき,プログラムが組める.また,そのアルゴリズムの計算回数の評価ができる.
|
7週 |
アルゴリズムを改良する方法(バブルソート) |
バブルソートについて理解でき,プログラムが組める.また,そのアルゴリズムの計算回数の評価ができる.
|
8週 |
中間評価(演習課題の点数を成績算入,筆記試験の点数と合わせて評価する) |
授業において演習課題を与え,学習状況を確認し完成度により評価する.筆記試験の点数と合わせて総合評価する.
|
2ndQ |
9週 |
アルゴリズムを設計する方法1(分割統治法とフィボナッチ数列) |
分割統治法によるフィボナッチ数列の計算アルゴリズムが理解でき,プログラムが組める.また,そのアルゴリズムの計算回数の評価ができる.
|
10週 |
アルゴリズムを設計する方法2(動的計画法とフィボナッチ数列) |
動的計画法によるフィボナッチ数列の計算アルゴリズムが理解でき,プログラムが組める.また,そのアルゴリズムの計算回数の評価ができる.
|
11週 |
問題に適したアルゴリズムの設計法1(再帰とハノイの塔) |
再帰の考え方,およびハノイの塔の考え方が理解でき,プログラムが組める.
|
12週 |
問題に適したアルゴリズムの設計法2(最短経路の数え上げ問題) |
最短経路の数え上げ問題とその解法が理解でき,プログラムが組める.
|
13週 |
アルゴリズム設計法を応用したソート1(マージソート) |
マージソートのアルゴリズムが理解でき,プログラムが組める.また,そのアルゴリズムの計算回数の評価ができる.
|
14週 |
アルゴリズム設計法を応用したソート2(ソートアルゴリズムの計算量) |
各種ソートアルゴリズムの計算量の評価法が理解でき,アルゴリズム間の比較をすることができる.
|
15週 |
定期評価:基本的なテータ構造,ソートと探索アルゴリズム,再帰,計算量など |
授業において演習課題を与え,学習状況を確認し完成度により評価する.筆記試験の点数と合わせて総合評価する.
|
16週 |
定期試験答案返却と解説 |
|
後期 |
3rdQ |
1週 |
分割統治法によるソート1(クイックソート) |
クイックソートのアルゴリズムが理解でき,プログラムが組める.
|
2週 |
分割統治法によるソート2(クイックソートの計算量) |
クイックソートのアルゴリズムの計算回数の評価ができる.
|
3週 |
データ構造の重要性(2分探索木) |
2分探索木の考え方およびそれを用いた探索法が理解でき,プログラムが組める.また,そのアルゴリズムの計算回数の評価ができる.
|
4週 |
データ構造に依存したアルゴリズム1(スタックとキュー) |
スタックとキューの概念が理解できる.
|
5週 |
データ構造に依存したアルゴリズム2(深さ優先探索と幅優先探索) |
深さ優先探索と幅優先探索の考え方が理解でき,プログラムが組める.
|
6週 |
データ構造を応用したソート1(ヒープ) |
ヒープの概念について理解し説明することができる.
|
7週 |
データ構造を応用したソート2(ヒープソート) |
ヒープソートのアルゴリズムが理解でき,プログラムが組める.また,そのアルゴリズムの計算回数の評価ができる.
|
8週 |
中間評価(演習課題の点数を成績算入,筆記試験の点数と合わせて評価する) |
授業において演習課題を与え,学習状況を確認し完成度により評価する.筆記試験の点数と合わせて総合評価する.
|
4thQ |
9週 |
データ構造の変更に応じたアルゴリズムの改良1(ダイクストラ法) |
ダイクストラ法のアルゴリズムが理解でき,プログラムが組める.
|
10週 |
データ構造の変更に応じたアルゴリズムの改良2(貪欲法) |
貪欲法のアルゴリズムが理解でき,プログラムが組める.
|
11週 |
条件に応じた探索法の改良1(力まかせ探索とミニマックス法) |
力まかせ探索とミニマックス法のアルゴリズムが理解でき,プログラムが組める.
|
12週 |
条件に応じた探索法の改良2(枝刈り) |
枝刈りのアルゴリズムが理解でき,説明することができる.
|
13週 |
目的別のアルゴリズムとデータ構造1(分割ナップザック問題) |
分割ナップザック問題の解法が理解でき,説明することができる.
|
14週 |
目的別のアルゴリズムとデータ構造2(0-1ナップザック問題) |
0-1ナップザック問題の解法が理解でき,説明することができる.
|
15週 |
定期評価:基本的なテータ構造,ソートと探索アルゴリズム,再帰,計算量など |
授業において演習課題を与え,学習状況を確認し完成度により評価する.筆記試験の点数と合わせて総合評価する.
|
16週 |
定期試験答案返却と解説 |
|
分類 | 分野 | 学習内容 | 学習内容の到達目標 | 到達レベル | 授業週 |
専門的能力 | 分野別の専門工学 | 情報系分野 | プログラミング | 代入や演算子の概念を理解し、式を記述できる。 | 4 | 前2,前3 |
プロシージャ(または、関数、サブルーチンなど)の概念を理解し、これらを含むプログラムを記述できる。 | 4 | 前3,前10,後6 |
変数の概念を説明できる。 | 4 | 前2,前3 |
データ型の概念を説明できる。 | 4 | 前2,前3,前4,前10,前12 |
制御構造の概念を理解し、条件分岐を記述できる。 | 4 | 前2,前3,前4 |
制御構造の概念を理解し、反復処理を記述できる。 | 4 | 前2,前4 |
与えられた問題に対して、それを解決するためのソースプログラムを記述できる。 | 4 | 前2,前3 |
ソフトウェア生成に必要なツールを使い、ソースプログラムをロードモジュールに変換して実行できる。 | 4 | 前3,前4 |
与えられたソースプログラムを解析し、プログラムの動作を予測することができる。 | 4 | 前16,後6 |
主要な言語処理プロセッサの種類と特徴を説明できる。 | 4 | 前2,前3 |
ソフトウェア開発に利用する標準的なツールの種類と機能を説明できる。 | 4 | 前2,前3 |
プログラミング言語は計算モデルによって分類されることを説明できる。 | 4 | 前4,前10 |
主要な計算モデルを説明できる。 | 4 | 前4 |
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを設計できる。 | 4 | 前5,前12 |
要求仕様に従って、いずれかの手法により動作するプログラムを設計することができる。 | 4 | 前5,前12 |
要求仕様に従って、いずれかの手法により動作するプログラムを実装することができる。 | 4 | 前4,前5 |
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを実装できる。 | 4 | 前4,前5 |
ソフトウェア | アルゴリズムの概念を説明できる。 | 4 | 前3,前8,前12,後6,後11,後12,後13,後14 |
与えられたアルゴリズムが問題を解決していく過程を説明できる。 | 4 | 前3,前10,前12,後6,後7,後11,後12,後13,後14 |
同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを説明できる。 | 4 | 前8,後6,後7,後11,後12,後13,後14 |
整列、探索など、基本的なアルゴリズムについて説明できる。 | 4 | 前4,前5,前8,前9,前12,前13,前14,前15,後11,後12,後13,後14 |
時間計算量によってアルゴリズムを比較・評価できることを説明できる。 | 4 | 前4,前5,前6,前7,前8,前9,前10,前14,前15,後7,後11,後12,後13,後14 |
領域計算量などによってアルゴリズムを比較・評価できることを説明できる。 | 4 | 前5,前6,前7,前12,前13,後7,後11,後12,後13,後14 |
コンピュータ内部でデータを表現する方法(データ構造)にはバリエーションがあることを説明できる。 | 4 | 後2,後3,後4,後5,後10,後14 |
同一の問題に対し、選択したデータ構造によってアルゴリズムが変化しうることを説明できる。 | 4 | 前2,後1,後2,後3,後4,後5,後14,後15 |
リスト構造、スタック、キュー、木構造などの基本的なデータ構造の概念と操作を説明できる。 | 4 | 前2,前10,後1,後2,後3,後4,後5,後9,後10,後14,後15 |
リスト構造、スタック、キュー、木構造などの基本的なデータ構造を実装することができる。 | 4 | 前2,前10,前11,後1,後2,後3,後4,後5,後9,後10,後14 |
ソフトウェアを中心としたシステム開発のプロセスを説明できる。 | 4 | 前14,後10,後11,後12,後13,後14 |
ソースプログラムを解析することにより、計算量等のさまざまな観点から評価できる。 | 4 | 後9,後10,後11,後12,後13 |
同じ問題を解決する複数のプログラムを計算量等の観点から比較できる。 | 4 | 後9,後10,後11,後12,後13 |
分野横断的能力 | 汎用的技能 | コミュニケーションスキル | コミュニケーションスキル | 日本語と特定の外国語の文章を読み、その内容を把握できる。 | 2 | |
基盤的資質・能力 | 自己理解 | 自己理解 | チームで協調・共同することの意義・効果を認識している。 | 3 | |
チームで協調・共同するために自身の感情をコントロールし、他者の意見を尊重するためのコミュニケーションをとることができる。 | 3 | |
当事者意識をもってチームでの作業・研究を進めることができる。 | 3 | |
チームのメンバーとしての役割を把握した行動ができる。 | 3 | |
リーダーがとるべき行動や役割をあげることができる。 | 3 | |
適切な方向性に沿った協調行動を促すことができる。 | 3 | |
リーダーシップを発揮する(させる)ためには情報収集やチーム内での相談が必要であることを知っている | 3 | |
法令やルールを遵守した行動をとれる。 | 3 | |
他者のおかれている状況に配慮した行動がとれる。 | 3 | |
技術が社会や自然に及ぼす影響や効果を認識し、技術者が社会に負っている責任を挙げることができる。 | 3 | |
自身の将来のありたい姿(キャリアデザイン)を明確化できる。 | 3 | |
その時々で自らの現状を認識し、将来のありたい姿に向かっていくために現状で必要な学習や活動を考えることができる。 | 3 | |
キャリアの実現に向かって卒業後も継続的に学習する必要性を認識している。 | 3 | |
これからのキャリアの中で、様々な困難があることを認識し、困難に直面したときの対処のありかた(一人で悩まない、優先すべきことを多面的に判断できるなど)を認識している。 | 3 | |
高専で学んだ専門分野・一般科目の知識が、企業や大学等でどのように活用・応用されるかを説明できる。 | 3 | |
企業等における技術者・研究者等の実務を認識している。 | 3 | |
企業人としての責任ある仕事を進めるための基本的な行動を上げることができる。 | 3 | |
企業における福利厚生面や社員の価値観など多様な要素から自己の進路としての企業を判断することの重要性を認識している。 | 2 | |
企業には社会的責任があることを認識している。 | 3 | |