講義概要/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 |
【オンライン(オンデマンド型)】 ガイダンス。講義の紹介。アルゴリズム、データ構造の重要性の理解。
|
|
2
|
授業計画/Class |
ガイダンスの内容復習。アルゴリズムとデータ構造の概要。実際のソフトウェア開発での必要性。学習環境の整備。
|
|
3
|
授業計画/Class |
アルゴリズムと計算量。良いアルゴリズムの条件。漸近的計算量。オーダー。
|
|
4
|
授業計画/Class |
各種ソートアルゴリズム。ソートの性能。漸近的計算量。オーダー
|
|
5
|
授業計画/Class |
基本的なデータ構造(リスト、スタック、キュー)とその特性
|
|
6
|
授業計画/Class |
データ構造(二分探索木、ハッシュテーブル)と検索。各種データ形式の変換 |
|
7
|
授業計画/Class |
文字列検索アルゴリズム、正規表現での検索
|
|
8
|
授業計画/Class |
日本語と国際化環境での文字とその検索 |
|
9
|
授業計画/Class |
並列アルゴリズム選手権(PSAC)。チームで並列ソートアルゴリズムを考え、複数人でできるだけソートしたチームが優勝。 |
|
10
|
授業計画/Class |
コンピュータアーキテクチャ。浮動小数点、メモリモデル、コンテキスト、パイプライン等 |
|
11
|
授業計画/Class |
人工知能とコンピュータ囲碁。ゲームプログラミングでよく使われるアルゴリズムと、囲碁や将棋での人工知能の使われ方に関して、囲碁、将棋のプログラマとして日本でも有数の知見を持つ小林祐樹氏(日立製作所勤務)の講演を受ける。 |
|
12
|
授業計画/Class |
オペレーションシステム。ファイルシステム、並列処理(プロセス、スレッド) |
|
13
|
授業計画/Class |
人工知能とアルゴリズム。万能アルゴリズムとしてのニューラルネットワーク。RNNの解説。 |
|
14
|
授業計画/Class |
アルゴリズムの最近の話題。講義で不足していた事項の復習。期末テストの模擬テスト実施。 |
|
15
|
|
|
事前学習/Preparation |
講師の指示されたことを事前に行うこと。 |
事後学習/Reviewing |
前半の講義では、講義内容に則したPythonのプログラムを宿題として出す。 |
|
|
授業方法/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
|
データ構造
アルゴリズム
コンピュータアーキテクチャ
オペレーティングシステム
ソフトウェア工学
|