本講義では、Pythonを用いて基本的なデータ構造とアルゴリズムについて学ぶ。
講義と演習を通して、問題解決のためにプログラミングを用いる能力を養う。
本講義を履修することにより、以下の知識と能力を習得する。
1) 基本的なPythonの使い方の習得
2) 基本的なデータ構造とアルゴリズムの理解
3) アルゴリズムによる効率性の違いを理解
4) アルゴリズムを実装する力
Python、プログラミング、アルゴリズム
✔ 専門力 | 教養力 | コミュニケーション力 | 展開力(探究力又は設定力) | ✔ 展開力(実践力又は解決力) |
各講義の2/3は講義形式で行い、残りの1/3は演習に充てる。
授業計画 | 課題 | |
---|---|---|
第1回 | ガイダンス・復習 (数、文字列、リスト) | 数、文字列、リストの使い方を理解する。 |
第2回 | 復習(for文、if文) | for文、if文の使い方を理解する。 |
第3回 | 文字列操作(文字列整形、パターンマッチ、正規表現) | 基本的な文字列操作ができるようになる。 |
第4回 | 平面幾何(線分の交差判定、点と直線の距離、凸包) | 凸包を計算をできるようになる。 |
第5回 | 乱数(一様乱数、正規分布への変換、乱数生成) | 乱数とは何かを理解する。 |
第6回 | 統計(データ処理、フィッティング) | データを読み込み統計的処理を行えるようになる。 |
第7回 | 計算量(オーダー表記) | 計算量とは何かを理解する。 |
第8回 | スタックとキュー(深さ優先探索と幅優先探索) | 深さ優先探索と幅優先探索の違いを説明できるようになる。 |
第9回 | ソートアルゴリズム(バブルソート、ヒープソート、クイックソート、マージソート) | ソートアルゴリズムの違いを説明できるようになる。 |
第10回 | バックトラック(Nクイーン問題、数独) | バックトラックの考え方を説明できるようになる。 |
第11回 | 動的計画法(ナップサック問題) | 動的計画法の考えかたを説明できるようになる。 |
第12回 | 最短経路問題(Warshall-Floyd, Bellman-Fordアルゴリズム) | 最短経路問題が解けるようになる。 |
第13回 | 線形計画法 | pulpを用いて線形計画問題を解く。 |
第14回 | トラベリングセールスマン問題 | トラベリングセールスマン問題が解けるようになる。 |
第15回 | 期末試験 |
特になし
Guido van Rossum: Pythonチュートリアル 第2版
Mark Lutz: 初めてのPython 第3版
到達度を期末試験により評価する。
Pythonの基礎的な使い方の習得を前提とする。プログラミング基礎(経営工学)の履修を強く推奨する。