到達目標
3年次までに習得したプログラミング技術に基づき,世の中のさまざまな問題をコンピュータにより解決するために必要な各種データ構造の特徴を理解し,それらを意識したアルゴリズム(解法の手順)を問題に適用できる高度なプログラミング能力を身に付けることが目標である.
さらに,4年次最初の学生実験と連動し,人工知能(AI)の分野で多くの研究および開発者が用いているPython言語の文法と基本ツール・ライブラリを理解し,世の中の問題解決に役立つプログラムを作成することが目標である.
1.「アルゴリズムの基本概念とデータ構造」を説明でき,さまざまなデータ構造を用いたプログラムが作成できる.
2.教科書に取り上げられている「サーチ(探索)とソート(整列,並べ替え)」を説明でき,基本的なプログラムの作成と時間計算量を求めることができる.
3.教科書に取り上げられている「アルゴリズムの設計⼿法」を説明でき,基本的なプログラムの作成と時間計算量を求めることができる.
ルーブリック
| 理想的な到達レベルの目安 | 標準的な到達レベルの目安 | 未到達レベルの目安 |
評価項目1 | 任意の課題を解決するため,適切なデータ構造の選定およびアルゴリズムを的確に表現し,計算量を求めることができる.
任意の課題に対して,リスト,スタックとキュー,木構造,グラフをプログラミング言語で表現できる. | アルゴリズムの表現法や計算量について説明できる.
リスト,スタックとキュー,木構造,グラフの構造と特徴について,それらの基礎的な語句を用いて説明できる. | アルゴリズムの表現法や計算量について説明できない.
リスト,スタックとキュー,木構造,グラフの構造と特徴について,それらの基礎的な語句を用いて説明できない. |
評価項目2 | 与えられたデータを特定の順序に並べ替えるアルゴリズムの考え方や各手法,データを探索する各手法を,それらの違いを含めて具体的に説明でき,コンピュータにより各手法を実現できる. | 与えられたデータを特定の順序に並べ替えるアルゴリズムの考え方や各手法,データを探索する各手法を,それらの違いを含めて説明できる. | 与えられたデータを特定の順序に並べ替えるアルゴリズムの考え方や各手法,データを探索する各手法を説明できない. |
評価項目3 | 分割統治法,動的計画法などの基本的なアルゴリズム設計法を具体的に説明でき,任意の問題をコンピュータにより解くことができる. | 分割統治法,動的計画法などの基本的なアルゴリズム設計法を説明できる. | 分割統治法,動的計画法などの基本的なアルゴリズム設計法を説明できない. |
学科の到達目標項目との関係
教育方法等
概要:
世の中のさまざまな問題をコンピュータにより解決するためには,何らかのデータ処理が必要である.コンピュータで処理しやすいように,データの集まりと各データ間の結合関係を表現(モデル化)したものがデータ構造であり,それを意識したアルゴリズム(解法の手順)を問題に適用することで効率のよい処理が可能となる.
本授業では,3年次までに習得したプログラミング技術に基づき,人工知能(AI)分野で必須のPython言語を用いて,さまざまな問題解決に必要なデータ処理の知識およびプログラミング能力を身に付けることを目的とする.
さらに,外国人講師による集中講義を実施することで,前期までに学習した内容の応用力を身に付けるとともに,海外の文献やWebサイトを理解できるように日本語での内容理解とのギャップを埋めることを目標とする.
授業の進め方・方法:
・本授業は多くのアルゴリズムを座学により理解し,演習を行うことで知識の定着を図る.
・授業中,または家庭でプログラムを何度も見返しながら,考え,それを実現する力を身に付ける.
注意点:
・90分の授業に対して90分程度に相当する放課後・家庭での自学学習,およびレポート課題を課す.
・本授業で学習する内容は3年次に学習するプログラム通論と関連があるため,十分に復習しておくことが望まれ,自ら学ぶ姿勢が求められる.
授業の属性・履修上の区分
授業計画
|
|
週 |
授業内容 |
週ごとの到達目標 |
前期 |
1stQ |
1週 |
ガイダンス アルゴリズムの基本概念と表現方法 |
本科目の学習内容や目標,評価方法について理解する. アルゴリズムの重要性,アルゴリズムとデータ構造の関係,アルゴリズムの表現法と計算量について説明できる.
|
2週 |
Pythonの文法と実践的プログラミング(1) |
CI4学生実験で未習得の文法も含め,比較的簡単な課題に対してプログラミングできる.
|
3週 |
アルゴリズムの計算量 |
アルゴリズムの計算量について理解し,説明できる.
|
4週 |
ソートアルゴリズム(1) |
いくつかの並べ替え(ソート)アルゴリズムを例として,アルゴリズムの比較,検討および改良について説明できる.
|
5週 |
ソートアルゴリズム(2) |
同上
|
6週 |
データの探索(1) |
いくつかの探索(サーチ)アルゴリズムを例として,アルゴリズムの比較,検討および改良について説明できる.
|
7週 |
データの探索(2) |
同上
|
8週 |
グラフ構造(1) |
グラフとグラフ探索について理解し,最短経路問題を解くことができる.
|
2ndQ |
9週 |
グラフ構造(2) |
同上
|
10週 |
アルゴリズムの設計法 |
動的計画法,貪欲法,分枝限定法を理解し,ナップサック問題を解くことができる.さらに,計算にかかるコストについて定量的に表現できる.
|
11週 |
乱択アルゴリズムと数論 |
乱択アルゴリズムを理解し,提示された課題を解くことができる.
|
12週 |
現代社会を支えるアルゴリズム |
ネットワークセキュリティに用いられている基礎的なアルゴリズムを理解し,プログラミングできる.
|
13週 |
ネットワークセキュリティの基礎 |
暗号化・復号化について理解し,Pythonによるプログラミングができる.
|
14週 |
数値計算 |
Pythonライブラリを用いて,微分法や積分法,連立方程式などの数値計算ができる.
|
15週 |
前期期末試験 |
前期期末までの内容についての演習問題を解くことができる.
|
16週 |
答案返却 |
|
後期 |
3rdQ |
1週 |
外国人講師による集中講義(1) |
Python言語を用いて,発展的な内容を理解およびプログラムを実装できる.
|
2週 |
外国人講師による集中講義(2) |
同上
|
3週 |
外国人講師による集中講義(3) |
同上
|
4週 |
外国人講師による集中講義(4) |
同上
|
5週 |
外国人講師による集中講義(5) |
同上
|
6週 |
外国人講師による集中講義(6) |
同上
|
7週 |
外国人講師による集中講義(7) |
同上
|
8週 |
外国人講師による集中講義(8) |
同上
|
4thQ |
9週 |
外国人講師による集中講義(9) |
同上
|
10週 |
外国人講師による集中講義(10) |
同上
|
11週 |
外国人講師による集中講義(11) |
同上
|
12週 |
外国人講師による集中講義(12) |
同上
|
13週 |
外国人講師による集中講義(13) |
同上
|
14週 |
外国人講師による集中講義(14) |
同上
|
15週 |
後期期末試験 |
発展的な内容についての演習問題を解くことができる. 発展的な内容についてのプログラムを実現できる.
|
16週 |
答案返却 |
|
モデルコアカリキュラムの学習内容と到達目標
分類 | 分野 | 学習内容 | 学習内容の到達目標 | 到達レベル | 授業週 |
評価割合
| 試験 | レポート | 発表 | 合計 |
総合評価割合 | 60 | 30 | 10 | 100 |
基礎的能力 | 0 | 0 | 0 | 0 |
専門的能力 | 60 | 30 | 10 | 100 |
分野横断的能力 | 0 | 0 | 0 | 0 |