Course Objectives
1.探索,ソーティング,再帰,線形リストといった基本的なアルゴリズムとデータ構造の理解し,説明することができる.
2.様々な応用課題について、学習したアルゴリズムとデータ構造の知識を用いて,Java 言語プログラミングによる実現手法を理解し,開発を実践できる.
3.時間計算量等によってアルゴリズムを比較・評価できることを理解し、説明することができる.
Rubric
| 理想的な到達レベルの目安 | 標準的な到達レベルの目安 | 未到達レベルの目安 |
| 探索,ソーティング,再帰,線形リストといった基本的なアルゴリズムとデータ構造を深く理解し、説明することができる. | 探索,ソーティング,再帰,線形リストといった基本的なアルゴリズムとデータ構造を理解し、説明することができる. | 探索,ソーティング,再帰,線形リストといった基本的なアルゴリズムとデータ構造を理解できない. |
| 様々な応用課題について,Javaプログラミングによる実現手法を深く理解し,開発を実践することができる. | 様々な応用課題について,Javaプログラミングによる実現ができ,与えられた解答例をもとに考察することができる. | 様々な応用課題について,Javaプログラミングによる実現ができない. |
| 時間計算量などによってアルゴリズムを比較・評価できることを理解し、説明することができる. | 時間計算量などによってアルゴリズムを比較・評価できることを理解し、簡単に説明することができる. | 時間計算量などによってアルゴリズムを比較・評価できることを理解できない. |
Assigned Department Objectives
Teaching Method
Outline:
“アルゴリズム+データ構造=プログラム”(N.Wirth)という名著があるが,基本的なプログラムを書くために必要とされる代表・基礎的なアルゴリズムとデータ構造を学習する.併せて,理解を深め,かつ確認のためのJava言語プログラミングについても修得する.
Style:
各回の授業では,講義による説明の後,JAVA言語によるプログラミング実習・演習を行う.理解度を確認するために,項目毎に学習シートで課題を与え,JAVA言語によるプログラム開発の実践力,結果からの考察を行うプログラミング実習・演習も行う.なお,この際,技術職員のサポートもあるので,積極的な取り組みを期待する.
Notice:
本科:基礎プログラミング(1 年),プログラミング言語(2 年),言語処理(5 年)
Course Plan
|
|
|
Theme |
Goals |
1st Semester |
1st Quarter |
1st |
オリエンテーション,線形探索(1) |
オリエンテーションの後,探索アルゴリズムおよび表中のデータを探索するアルゴリズムで最も単純かつ基本である線形探索について説明できる.
|
2nd |
線形探索(2) |
線形探索における“番兵”およびデータの挿入・削除について説明できる.
|
3rd |
二分探索 |
あらかじめソートされているデータに対して,効率よく探索するための手法である2分探索法について説明できる.
|
4th |
演習 |
レポート課題として,線形探索および2分探索についてのプログラミング演習を行う【学習シート】
|
5th |
ハッシュ法(1) |
データを効率よく探索するための代表的かつ最もよく用いられている手法であるハッシュ法についてプログラムを記述できる.
|
6th |
ハッシュ法(2),アルゴリズムの計算量 |
前回に引き続き,ハッシュ法について学び,さらに,アルゴリズムの計算量の説明の後,これまでに学んだ探索アルゴリズムの時間計算量について考察することができる.
|
7th |
演習 |
ハッシュ法により動作するプログラムを設計・実装し、考察することができる.【学習シート】
|
8th |
再帰アルゴリズムの考え方 |
例を通じて,再帰アルゴリズムについて理解し、説明できる.
|
2nd Quarter |
9th |
中間試験 |
第1~7回に関しての理解を確認する.
|
10th |
試験問題解説,再帰アルゴリズムの基本 |
中間試験問題の解説.再帰アルゴリズムの基本について説明できる.
|
11th |
再帰アルゴリズムの解析(1) |
再帰アルゴリズムの解析(トップダウン法およびボトムアップ法)について説明できる.
|
12th |
再帰アルゴリズムの解析(2),バックトラッキング(1) |
前回に続き,再帰アルゴリズムの解析を学んだ後,しらみつぶしを組織的かつ効率よく行う手法としてのバックトラック法について理解できる.
|
13th |
バックトラッキング(2) |
前回に続き,バックトラック法について理解し、説明できる.
|
14th |
演習 |
レポート課題として,これまでに学んだ再帰アルゴリズムに関するプログラムを設計・実装し、考察することができる.【学習シート】
|
15th |
期末試験 |
第8,10~14回についての理解を確認する.
|
16th |
試験問題解説 |
試験の解答と解説を行う.
|
2nd Semester |
3rd Quarter |
1st |
ソーティングの概念及び単純なソート法 |
ソーティングの基本及び単純なソート法の1つである単純選択法について説明できる.
|
2nd |
単純なソート法及びクイックソート |
単純なソート法の続きとして,バブルソートについて学んだ後,代表的な再帰アルゴリズムの例ともいえるクイックソートについて理解し、説明できる.
|
3rd |
クイックソート |
前回に続きクイックソートについて学ぶ.
|
4th |
演習 |
レポート課題として,単純ソートおよびクイックソートアルゴリズムに関するプログラミング演習を行う.
|
5th |
ヒープソート |
3年次の情報数学の中のグラフにおいて学んだ木構造の概念を用いたヒープソートについて理解し、説明できる.
|
6th |
ヒープソート及びソートアルゴリズムの時間計算量 |
ヒープソートの続きとこれまでに学んだソートアルゴリズムの時間計算量によって比較・評価できることを説明できる.
|
7th |
演習 |
レポート課題として,ヒープソートアルゴリズムに関するプログラムを設計・実装し、考察することができる.
|
8th |
中間試験 |
第16~22回についての理解を確認する.
|
4th Quarter |
9th |
試験問題解説,線形リスト(1) |
試験問題の解答と解説.ポインタを用いた1方向線形リストの概念及びJAVA プログラムでの実現方法を説明できる.
|
10th |
線形リスト(2) |
線形リストにおけるデータの探索・追加・削除について説明出来る.
|
11th |
演習 |
レポート課題として,ここまでに学んだ線形リストに関するプログラミムを設計・実装し、考察できる.【学習シート】
|
12th |
線形リスト(3) |
循環・重連結リストについて説明できる.
|
13th |
線形リスト(4) |
線形リストを用いたハッシュ法について説明できる.
|
14th |
演習 |
レポート課題として,循環・重連結リストを用いたハッシュ法に関するプログラムを設計・実装し、考察できる.【学習シート】
|
15th |
期末試験 |
第24~29回に関する理解度を確認する.
|
16th |
試験問題解説など |
試験の解答と解説を行う.
|
Evaluation Method and Weight (%)
| 試験 | 課題レポート | 講義ノート | 演習 | Total |
Subtotal | 80 | 20 | 0 | 0 | 100 |
基礎的能力 | 0 | 0 | 0 | 0 | 0 |
専門的能力 | 80 | 20 | 0 | 0 | 100 |
分野横断的能力 | 0 | 0 | 0 | 0 | 0 |