講義内容詳細:データ構造とアルゴリズム/アルゴリズムとデータ構造

戻る
年度/Academic Year 2023
授業科目名/Course Title (Japanese) データ構造とアルゴリズム/アルゴリズムとデータ構造
英文科目名/Course Title (English) Data Structure and Algorithms/Algorithms and Data Structure
学期/Semester 後期 単位/Credits 2
教員名/Instructor (Japanese) 居駒 幹夫
英文氏名/Instructor (English) IKOMA Mikio

講義概要/Course description
プログラムの最も基本的要素であるデータ構造とアルゴリズムの概念を理解し、その重要性を認識する。本科目ではデータ構造とアルゴリズムの内部を理解することも目標とするが、これらを実装したライブラリの必要性の理解および効果的かつ効率的な活用という側面をより重視する。
達成目標/Course objectives
社会における実際の課題に直面し、その課題を解決するためのプログラム開発時に、適切なデータ構造、アルゴリズム(を実装したライブラリ)を選択し、課題を効率的に解決するプログラムを書くことができること。また、保守性、信頼性の高いプログラムが書けることも目標とする。
学部・研究科のディプロマポリシー(卒業認定・学位授与の方針)に基づき、当該科目を履修することで身につく能力 / Abilities to be acquired by completing the course in accordance with the faculty and graduate school diploma policy (graduation certification and degree conferral)
学部・研究科のディプロマポリシー(卒業認定・学位授与の方針)/ Undergraduate and Graduate Diploma Policy (Graduation Certification and Degree Conferral)
履修条件(事前に履修しておくことが望ましい科目など)/Prerequisite
本科目は選考科目。受講希望の学生はCoursePowerの記述に従い、アンケートを期限までに提出すること。科目開始時点でPythonでのプログラム記述経験は問わないが、経験ない場合は、事前にPythonの基礎的な文法を自習してくること。
授業計画/Lecture plan
1
授業計画/Class 【オンライン(オンデマンド型)】
ガイダンス。講義の紹介。アルゴリズム、データ構造の重要性の理解。
事前学習/Preparation 授業用の資料を事前に読んでくること。Pythonの基礎的な文法を自習してくること。
開発環境として使用するGoogle Colabがどのようなものかを自習して理解しておくこと。
https://colab.research.google.com/notebooks/welcome.ipynb?hl=ja
事後学習/Reviewing アンケートへの回答
2
授業計画/Class ガイダンスの内容復習。アルゴリズムとデータ構造の概要。実際のソフトウェア開発での必要性。学習環境の整備。
事前学習/Preparation Pythonについて全く知らない受講者はWebで簡単に予習をお願いします。
事後学習/Reviewing アンケート回答。共有ファイルの設定等の開発環境の設定。
3
授業計画/Class アルゴリズムと計算量。良いアルゴリズムの条件。漸近的計算量。オーダー。
事前学習/Preparation 授業用の資料を事前に読んでくること
事後学習/Reviewing 授業中に出題された演習課題を解いて提出
4
授業計画/Class
ソートの性能。漸近的計算量。オーダー


事前学習/Preparation ここまでの授業のテキスト及び演習問題を読み返しておくこと
事後学習/Reviewing アンケート提出
5
授業計画/Class 基本的なデータ構造(リスト、スタック、キュー)とその特性
事前学習/Preparation 授業用の資料を事前に読んでくること
事後学習/Reviewing 授業中に出題された演習課題を解いて提出
6
授業計画/Class データ構造(二分探索木、ハッシュテーブル)と検索。各種データ形式の変換
事前学習/Preparation 授業用の資料を事前に読んでくること
事後学習/Reviewing 授業中に出題された演習課題を解いて提出
7
授業計画/Class 文字列検索アルゴリズム、正規表現での検索
事前学習/Preparation 授業用の資料を事前に読んでくること
事後学習/Reviewing 授業中に出題された演習課題を解いて提出
8
授業計画/Class 日本語と国際化環境での文字とその検索
事前学習/Preparation 授業用の資料を事前に読んでくること
事後学習/Reviewing 授業中に出題された演習課題を解いて提出
9
授業計画/Class 並列アルゴリズム選手権(PSAC)。チームで並列ソートアルゴリズムを考え、複数人でできるだけソートしたチームが優勝。
事前学習/Preparation 授業用の資料を事前に読んでくること
事後学習/Reviewing ミニレポート(アンケート)
10
授業計画/Class コンピュータアーキテクチャ。浮動小数点、メモリモデル、コンテキスト、パイプライン等
事前学習/Preparation 授業用の資料を事前に読んでくること
事後学習/Reviewing 授業中に出題された演習課題を解いて提出
11
授業計画/Class オペレーションシステム。ファイルシステム、並列処理(プロセス、スレッド)
事前学習/Preparation 授業用の資料を事前に読んでくること
事後学習/Reviewing 授業中に出題された演習課題を解いて提出
12
授業計画/Class 人工知能とアルゴリズム。万能アルゴリズムとしてのニューラルネットワーク。RNNの解説。
事前学習/Preparation 授業用の資料を事前に読んでくること
事後学習/Reviewing 授業中に出題された演習課題を解いて提出
13
授業計画/Class 人工知能とコンピュータ囲碁。ゲームプログラミングでよく使われるアルゴリズムと、囲碁や将棋での人工知能の使われ方に関して、囲碁、将棋のプログラマとして日本でも有数の知見を持つ小林祐樹氏(日立製作所勤務)の講演を受ける。
事前学習/Preparation 授業用の資料を事前に読んでくること
事後学習/Reviewing ミニレポート
14
授業計画/Class アルゴリズムの最近の話題。講義で不足していた事項の復習。期末テストの模擬テスト実施。
事前学習/Preparation 授業用の資料を事前に読んでくること
事後学習/Reviewing ここまでの講義で理解困難であった事項の再学習
15
授業計画/Class 期末テスト
事前学習/Preparation 期末テスト範囲の過去講義の資料を通読すること
事後学習/Reviewing アンケート
授業方法/Method of instruction
区分/Type of Class 対面授業 / Classes in-person
実施形態/Class Method 通常型 / regular
補足事項/Supplementary notes本科目の各講義は、対面での講義/演習を基本とする。(コロナ禍での自宅待機等)事情のある学生は、講義前に事前に申告のうえ、オンラインリアルタイム、オンデマンドでの受講も許可とする。
活用される授業方法/Teaching methods used
成績評価方法/Evaluation
1 試験 Exam 60% 基本的知識が身に付いたか否か。各回講義のキーワードの意味の理解を2択問題で問う。本テストで規定の点数を取れない受講生は単位を出さない。
2 レポート Report 40% 課題に対応したレポートになっているか。
講義の概要が理解できているか否か。
参考書/Reference books
 著者名
Author
タイトル
Title
出版社
Publisher
出版年
Published year
ISBN価格
Price
コメント
Comments
 
1 John V. Guttag Python言語によるプログラミングイントロダクション:世界標準MIT教科書 近代科学社 2016 4764904691 4104 経験者向け
2 クジラ飛行机 実践力をつける Python の教科書 マイナビ出版 2016 4839960240 2838 初心者向け
メッセージ/Message
本科目では、データ構造やアルゴリズムを実装するプログラムを書くのではなく、(社会に出てからと同様)これらを実装したライブラリを使うプログラムを書きます。プログラムレベルの講義とともに、今後のITで重要な各分野でどのように、データ構造やアルゴリズムが使われていくのかということを皆さんと考察を深めたいと思います。お手軽にPythonを学びたい、という受講者も歓迎します。
キーワード/Keywords
データ構造     アルゴリズム     コンピュータアーキテクチャ     オペレーティングシステム     ソフトウェア工学