
科目の概要
コンピューターサイエンスにおいて重要な知識であるアルゴリズムとデータ構造の基礎を取り上げることで、基本的なアルゴリズムおよびアルゴリズムを考える際に重要なプログラムの効率や計算複雑性といった知識を理解する。プログラミング言語Pythonを活用して実際にプログラムを実行したり書き換えたりすることで、自らプログラムを書く能力を養う。
科目情報
履修想定年次
2年次
単位数
2単位
開講Q
1Q、3Q
科目区分
選択
授業の方法
オンデマンド科目
評価方法
確認レポート 50% , 単位認定試験 50%
前提推奨科目
前提必須科目
後継推奨科目
科目コード
INF-2-C1-1030-006
到達目標
基本的なアルゴリズムやデータ構造について、それがどのような場面で用いられるか説明できるようになり、基本的なアルゴリズムについて、その動作を説明できるようになる。また、プログラムの効率や計算複雑性といった知識について理解する。プログラミング言語Pythonを活用して実際にプログラムを実行したり書き換えたりすることで、既存のアルゴリズムを利用してプログラムが書けるようになる。
教科書・参考書
- JohnV.Guttag著、久保幹雄監訳『世界標準MIT教科書Python言語によるプログラミングイントロダクション第3版』近代科学社、2023年大槻兼資『アルゴリズム的思考力が身につく!プログラミングコンテストAtCoder入門』KADOKAWA、2022年
授業時間外の学修
各回の授業内容は繰り返し見返し、各回二時間ほど復習を行ってください。また、次回の学修内容についてもあらかじめ不明な単語や前提となる知識をWebで調べるなどして各回三時間ほど予習を行ってください。
特記事項
順次公開予定
授業計画
第1回プログラミング言語Pythonの概要
第1回
プログラミング言語Pythonの概要
第2回簡単な算術プログラム
第2回
簡単な算術プログラム
第3回再帰と広域変数
第3回
再帰と広域変数
第4回計算複雑性入門
第4回
計算複雑性入門
第5回いくつかの単純なアルゴリズムとデータ構造
第5回
いくつかの単純なアルゴリズムとデータ構造
第6回プロットとクラス
第6回
プロットとクラス
第7回ナップサック問題とグラフ最適化問題
第7回
ナップサック問題とグラフ最適化問題
第8回動的計画法
第8回
動的計画法
第9回ランダムウォークと可視化
第9回
ランダムウォークと可視化
第10回確率、統計とプログラム
第10回
確率、統計とプログラム
第11回モンテカルロ・シミュレーション
第11回
モンテカルロ・シミュレーション
第12回競技プログラミング入門
第12回
競技プログラミング入門
第13回競技プログラミング実践 1
第13回
競技プログラミング実践 1
第14回競技プログラミング実践 2
第14回
競技プログラミング実践 2
第15回競技プログラミング実践 3
第15回
競技プログラミング実践 3