Outline:
基本的なプログラムを書くために必要とされる代表的かつ基礎的なアルゴリズムとデータ構造を学習することで,与えられた課題を効率よく解決する能力を身につける.併せて,より理解を深めるため,与えられた課題をJava言語プログラミングによる実現方法を理解し,開発を実践することができる.加えて,時間計算量などによってアルゴリズムを比較・評価できることを理解し,計算量等の観点から,自ら作成したソースプログラムの比較や評価ができる.
Style:
各回の授業では,まず,前回講義の理解度確認テストを行うことで習熟度をチェックした後,講義による説明を行う.
理解度確認テストの結果や提出課題の評価結果より、個人別に再テストや再提出を指示することで習熟度を再確認する場合がある.
課題演習を通じた学習した内容の確認により,より確実な知識とする.講義時間内に,項目毎のプログラミング演習が完成しなかった分が,提出期限までの宿題になる.また,レポート形式でプログラム・結果・考察を提出することにより習熟度をチェックする.
定期試験は主に学習シート,演習課題,強化し,小テスト形式の理解度確認問題から出題する.
事前事後学習として,授業中に配布した学習シートによる演習およびプログラム作成演習を計約30時間行う.
この科目は卒業までに必修得である.
Notice:
本科:プログラミング言語(2 年)
最終成績評価式:(前期中間試験+前期末試験+後期中間試験+後期末試験)÷4(80%)+提出課題6回分(20%)
|
|
|
Theme |
Goals |
1st Semester |
1st Quarter |
1st |
オリエンテーション,データ構造とアルゴリズムの基本 【事前事後学習の内容(1時間)】学習シート |
オリエンテーションの後,アルゴリズムとプログラムの違い,各種データ構造,アルゴリズムの基本
|
2nd |
線形探索(1) 【事前事後学習の内容(1時間)】学習シート |
探索アルゴリズムおよび表中のデータを探索するアルゴリズムで最も単純かつ基本である線形探索について説明できる.加えて,線形探索における“番兵”およびデータの挿入・削除について説明できる.
|
3rd |
二分探索 【事前事後学習の内容(1時間)】学習シート |
あらかじめソートされているデータに対して,効率よく探索するための手法である2分探索法について説明できる.
|
4th |
演習 【事前事後学習の内容(1時間)】学習シート |
レポート課題として,線形探索および2分探索についてのプログラミング演習を行う.(提出レポート課題1)
|
5th |
ハッシュ法(1) 【事前事後学習の内容(1時間)】学習シート |
データを効率よく探索するための代表的かつ最もよく用いられている手法であるハッシュ法についてプログラムを記述できる.
|
6th |
ハッシュ法(2),アルゴリズムの計算量 【事前事後学習の内容(1時間)】学習シート |
前回に引き続き,ハッシュ法について学び,さらに,アルゴリズムの計算量の説明の後,これまでに学んだ探索アルゴリズムの時間計算量について考察することができる.
|
7th |
中間試験 |
第1~6回に関しての理解を確認する.
|
8th |
答案返却,演習 【事前事後学習の内容(2時間)】学習シート |
レポート課題として,ハッシュ法により動作するプログラムを設計・実装し、考察することができる.(提出レポート課題2)
|
2nd Quarter |
9th |
再帰アルゴリズムの考え方 【事前事後学習の内容(1時間)】学習シート |
再帰アルゴリズムについて理解し、説明できる.
|
10th |
試験問題解説,再帰アルゴリズムの基本 【事前事後学習の内容(1時間)】学習シート |
再帰アルゴリズムの基本について説明できる.
|
11th |
再帰アルゴリズムの解析(1) 【事前事後学習の内容(1時間)】学習シート |
再帰アルゴリズムの解析(トップダウン法およびボトムアップ法)について説明できる.
|
12th |
再帰アルゴリズムの解析(2),バックトラッキング(1) 【事前事後学習の内容(1時間)】学習シート |
前回に続き,再帰アルゴリズムの解析を学んだ後,しらみつぶしを組織的かつ効率よく行う手法としてのバックトラック法について理解できる.
|
13th |
バックトラッキング(2) 【事前事後学習の内容(1時間)】学習シート |
前回に続き,バックトラック法について理解し、説明できる.
|
14th |
演習 【事前事後学習の内容(2時間)】学習シート |
レポート課題として,これまでに学んだ再帰アルゴリズムに関するプログラムを設計・実装し、考察することができる.(提出レポート課題3)
|
15th |
期末試験 |
第8,10~14回についての理解を確認する.
|
16th |
試験問題解説 |
試験の解答と解説を行う.
|
2nd Semester |
3rd Quarter |
1st |
ソーティングの概念及び単純なソート法 【事前事後学習の内容(1時間)】学習シート |
ソーティングの基本及び単純なソート法の1つである単純選択法について説明できる.
|
2nd |
単純なソート法及びクイックソート 【事前事後学習の内容(1時間)】学習シート |
単純なソート法の続きとして,バブルソートについて学んだ後,代表的な再帰アルゴリズムの例ともいえるクイックソートについて理解し、説明できる.
|
3rd |
クイックソート 【事前事後学習の内容(1時間)】学習シート |
前回に続きクイックソートについて学ぶ.
|
4th |
演習 【事前事後学習の内容(1時間)】学習シート |
レポート課題として,単純ソートおよびクイックソートアルゴリズムに関するプログラミング演習を行う.(提出レポート課題4)
|
5th |
ヒープソート 【事前事後学習の内容(1時間)】学習シート |
3年次の情報数学の中のグラフにおいて学んだ木構造の概念を用いたヒープソートについて理解し、説明できる.
|
6th |
ヒープソート及びソートアルゴリズムの時間計算量 【事前事後学習の内容(1時間)】学習シート |
ヒープソートの続きとこれまでに学んだソートアルゴリズムの時間計算量によって比較・評価できることを説明できる.
|
7th |
中間試験 |
後期第1回~6回についての理解を確認する.
|
8th |
試験問題解説,および演習 【事前事後学習の内容(2時間)】学習シート |
レポート課題として,ヒープソートアルゴリズムに関するプログラムを設計・実装し、考察することができる.(提出レポート課題5)
|
4th Quarter |
9th |
線形リスト(1) 【事前事後学習の内容(1時間)】学習シート |
ポインタを用いた1方向線形リストの概念及びJAVA プログラムでの実現方法を説明できる.
|
10th |
線形リスト(2) 【事前事後学習の内容(1時間)】学習シート |
線形リストにおけるデータの探索・追加・削除について説明出来る.循環・重連結リストについて説明できる.
|
11th |
線形リスト(3) 【事前事後学習の内容(3時間)】学習シート |
レポート課題として,線形リストを用いたハッシュ法に関するプログラムを設計,実装し,考察できる(提出レポート課題6)
|
12th |
様々なアルゴリズムの理解(1) |
過去の情報処理技術者試験に出題されたアルゴリズムに関する問題を用いて,様々なアルゴリズムを理解することができる
|
13th |
様々なアルゴリズムの理解(2) |
過去の情報処理技術者試験に出題されたアルゴリズムに関する問題を用いて,様々なアルゴリズムを理解することができる
|
14th |
様々なアルゴリズムの理解(3) |
過去の情報処理技術者試験に出題されたアルゴリズムに関する問題を用いて,様々なアルゴリズムを理解することができる
|
15th |
期末試験 |
後期第9回~14回に関する理解度を確認する.
|
16th |
試験問題解説など |
試験の解答と解説を行う.
|