Algorithms and Data Structures

Course Information

College Tokuyama College Year 2022
Course Title Algorithms and Data Structures
Course Code 0057 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:
各回の授業では,まず,前回講義の理解度確認テストを行うことで習熟度をチェックした後,講義による説明を行う.
理解度確認テストの結果や提出課題の評価結果より、個人別に再テストや再提出を指示することで習熟度を再確認する場合がある.
課題演習を通じた学習した内容の確認により,より確実な知識とする.講義時間内に,項目毎のプログラミング演習が完成しなかった分が,提出期限までの宿題になる.また,レポート形式でプログラム・結果・考察を提出することにより習熟度をチェックする.
定期試験は主に学習シート,演習課題,強化し,小テスト形式の理解度確認問題から出題する.
事前事後学習として,授業中に配布した学習シートによる演習およびプログラム作成演習を計約30時間行う.
この科目は卒業までに必修得である.
Notice:
本科:プログラミング言語(2 年)
最終成績評価式:(前期中間試験+前期末試験+後期中間試験+後期末試験)÷4(80%)+提出課題6回分(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分探索についてのプログラミング演習を行う.(提出レポート課題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 試験問題解説など 試験の解答と解説を行う.

Evaluation Method and Weight (%)

試験レポート課題Total
Subtotal8020100
基礎的能力000
専門的能力8020100
分野横断的能力000