Algorithms and Data Structures

Course Information

College Tokuyama College Year 2021
Course Title Algorithms and Data Structures
Course Code 0056 Course Category Specialized / Compulsory
Class Format Lecture Credits School Credit: 2
Department Department of Computer Science and Electronic Engineering Student Grade 3rd
Term Year-round Classes per Week 2
Textbook and/or Teaching Materials 教科書:新・明解 Javaで学ぶアルゴリズムとデータ構造 (柴田望洋) ソフトバンク(必要に応じて参考資料を配布する)
Instructor Urakami Misako

Course Objectives

1.探索,ソーティング,再帰,線形リストといった基本的なアルゴリズムとデータ構造の理解し,説明することができる.
2.様々な応用課題について、学習したアルゴリズムとデータ構造の知識を用いて,Java 言語プログラミングによる実現手法を理解し,与えられた期日までに完成させることができる.
3.時間計算量等によってアルゴリズムを比較・評価できることを理解し、説明することができる.

Rubric

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
基本的なアルゴリズムとデータ構造の理解探索,ソーティング,再帰,線形リストといった基本的なアルゴリズムとデータ構造を深く理解し、説明することができる.探索,ソーティング,再帰,線形リストといった基本的なアルゴリズムとデータ構造を理解し、説明することができる.探索,ソーティング,再帰,線形リストといった基本的なアルゴリズムとデータ構造を理解できない.
プログラミング実装様々な応用課題について,Javaプログラミングによる実現手法を深く理解し,開発を実践することができる.様々な応用課題について,Javaプログラミングによる実現ができ,与えられた解答例をもとに考察することができる.様々な応用課題について,Javaプログラミングによる実現ができない.
アルゴリズムの比較および評価時間計算量などによってアルゴリズムを比較・評価できることを理解し、説明することができる.時間計算量などによってアルゴリズムを比較・評価できることを理解し、簡単に説明することができる.時間計算量などによってアルゴリズムを比較・評価できることを理解できない.

Assigned Department Objectives

到達目標 C 1 See Hide

Teaching Method

Outline:
基本的なプログラムを書くために必要とされる代表・基礎的なアルゴリズムとデータ構造を学習することで,与えられた課題を効率よく解決する能力を身につける.併せて,より理解を深めるため,与えられた課題をJava言語プログラミングによる実現方法を理解し,開発を実践することができる.
Style:
各回の授業では,前半に,前回講義の小テスト形式による理解度確認、講義による説明を行う.理解度を確認するために,項目毎に学習シートで課題を与え,座学での演習,そしてJAVA言語によるプログラム開発の実践力,結果からの考察を行うプログラミング実習・演習も行う.演習を通じて,学習した内容を確かめることにより,より確実な知識とする.講義時間内に,項目毎のプログラミング演習が完成しなかった分が,提出期限までの宿題になる.また,レポート形式でプログラム・結果・考察を提出することにより習熟度をチェックする.
定期試験は主に学習シートの例題,演習課題,小テスト形式の理解度確認問題から出題する.
事前事後学習として,授業中に配布した学習シートによる演習およびプログラム作成演習を計約30時間行う.
この科目は卒業までに必修得である.
Notice:
本科:プログラミング言語(2 年)
最終成績評価式:(前期中間試験+前期末試験+後期中間試験+後期末試験)÷4(80%評価)+課題レポート(20%評価)

Characteristics of Class / Division in Learning

Active Learning
Aided by ICT
Applicable to Remote Class
Instructor Professionally Experienced

Course Plan

Theme Goals
1st Semester
1st Quarter
1st オリエンテーション,データ構造とアルゴリズムの基本
【事前事後学習の内容(1時間)】学習シート
オリエンテーションの後,アルゴリズムとプログラムの違い,各種データ構造,アルゴリズムの基本
2nd 線形探索(1)
【事前事後学習の内容(1時間)】学習シート
探索アルゴリズムおよび表中のデータを探索するアルゴリズムで最も単純かつ基本である線形探索について説明できる.加えて,線形探索における“番兵”およびデータの挿入・削除について説明できる.
3rd 二分探索
【事前事後学習の内容(1時間)】学習シート
あらかじめソートされているデータに対して,効率よく探索するための手法である2分探索法について説明できる.
4th 演習
【事前事後学習の内容(1時間)】学習シート
レポート課題として,線形探索および2分探索についてのプログラミング演習を行う.
5th ハッシュ法(1)
【事前事後学習の内容(1時間)】学習シート
データを効率よく探索するための代表的かつ最もよく用いられている手法であるハッシュ法についてプログラムを記述できる.
6th ハッシュ法(2),アルゴリズムの計算量
【事前事後学習の内容(1時間)】学習シート
前回に引き続き,ハッシュ法について学び,さらに,アルゴリズムの計算量の説明の後,これまでに学んだ探索アルゴリズムの時間計算量について考察することができる.
7th 中間試験 第1~6回に関しての理解を確認する.
8th 答案返却,演習
【事前事後学習の内容(2時間)】学習シート
レポート課題として,ハッシュ法により動作するプログラムを設計・実装し、考察することができる.
2nd Quarter
9th 再帰アルゴリズムの考え方
【事前事後学習の内容(1時間)】学習シート
例を通じて,再帰アルゴリズムについて理解し、説明できる.
10th 試験問題解説,再帰アルゴリズムの基本
【事前事後学習の内容(1時間)】学習シート
再帰アルゴリズムの基本について説明できる.
11th 再帰アルゴリズムの解析(1)
【事前事後学習の内容(1時間)】学習シート
再帰アルゴリズムの解析(トップダウン法およびボトムアップ法)について説明できる.
12th 再帰アルゴリズムの解析(2),バックトラッキング(1)
【事前事後学習の内容(1時間)】学習シート
前回に続き,再帰アルゴリズムの解析を学んだ後,しらみつぶしを組織的かつ効率よく行う手法としてのバックトラック法について理解できる.
13th バックトラッキング(2)
【事前事後学習の内容(1時間)】学習シート
前回に続き,バックトラック法について理解し、説明できる.
14th 演習
【事前事後学習の内容(2時間)】学習シート
レポート課題として,これまでに学んだ再帰アルゴリズムに関するプログラムを設計・実装し、考察することができる.
15th 期末試験 第8,10~14回についての理解を確認する.
16th 試験問題解説 試験の解答と解説を行う.
2nd Semester
3rd Quarter
1st ソーティングの概念及び単純なソート法
【事前事後学習の内容(1時間)】学習シート
ソーティングの基本及び単純なソート法の1つである単純選択法について説明できる.
2nd 単純なソート法及びクイックソート
【事前事後学習の内容(1時間)】学習シート
単純なソート法の続きとして,バブルソートについて学んだ後,代表的な再帰アルゴリズムの例ともいえるクイックソートについて理解し、説明できる.
3rd クイックソート
【事前事後学習の内容(1時間)】学習シート
前回に続きクイックソートについて学ぶ.
4th 演習
【事前事後学習の内容(1時間)】学習シート
レポート課題として,単純ソートおよびクイックソートアルゴリズムに関するプログラミング演習を行う.
5th ヒープソート
【事前事後学習の内容(1時間)】学習シート
3年次の情報数学の中のグラフにおいて学んだ木構造の概念を用いたヒープソートについて理解し、説明できる.
6th ヒープソート及びソートアルゴリズムの時間計算量
【事前事後学習の内容(1時間)】学習シート
ヒープソートの続きとこれまでに学んだソートアルゴリズムの時間計算量によって比較・評価できることを説明できる.
7th 中間試験 後期第1回~6回についての理解を確認する.
8th 試験問題解説,および演習
【事前事後学習の内容(2時間)】学習シート
レポート課題として,ヒープソートアルゴリズムに関するプログラムを設計・実装し、考察することができる.
4th Quarter
9th 線形リスト(1)
【事前事後学習の内容(1時間)】学習シート
ポインタを用いた1方向線形リストの概念及びJAVA プログラムでの実現方法を説明できる.
10th 線形リスト(2)
【事前事後学習の内容(1時間)】学習シート
線形リストにおけるデータの探索・追加・削除について説明出来る.
11th 演習
【事前事後学習の内容(1時間)】学習シート
レポート課題として,ここまでに学んだ線形リストに関するプログラミムを設計・実装し、考察できる.
12th 線形リスト(3)
【事前事後学習の内容(1時間)】学習シート
循環・重連結リストについて説明できる.
13th 線形リスト(4)
【事前事後学習の内容(1時間)】学習シート
線形リストを用いたハッシュ法について説明できる.
14th 演習
【事前事後学習の内容(2時間)】学習シート
レポート課題として,循環・重連結リストを用いたハッシュ法に関するプログラムを設計・実装し、考察できる.
15th 期末試験 後期第9回~14回に関する理解度を確認する.
16th 試験問題解説など 試験の解答と解説を行う.

Evaluation Method and Weight (%)

試験課題レポート講義ノート演習Total
Subtotal802000100
基礎的能力00000
専門的能力802000100
分野横断的能力00000