2020年 選択科目「プログラミング」
概要
早稲田大学本庄高等学院にて「プログラミング」の 授業を担当しました.
本年度は,プログラミング必修化に向けて,数学・物理学との連携を目的とした授業を行いました.
今年度は新型コロナウイルス感染症流行の影響で一部オンラインで実施したため,休校期間中に実施した内容を一部公開いたします.
目的
- アルゴリズムを理解しながら,実際のプログラムに落とし込むことによって論理的思考力を身につける.
- 数学・物理で習った内容をプログラム上で再現し,プログラミングの中に潜む理系的な要素を明らかにする.
- プログラミングが楽しい・面白いと思える興味のきっかけを提供する.
言語
自然言語は日本語を使用する.(留学生・日本語が苦手な学生が含まれる場合は英語により別途対応)
授業ではPython, Pseudocodeを用いて説明を行うが,提出課題のプログラミング言語は C, C++, Java, Pythonの中から選択することができる.
授業計画
- プログラミングの基礎・文法(4-6月)
- Python or C++ による基本的なプログラミング
- 代表的なアルゴリズム(6-7月)
- アルゴリズムを利用した待ち行列理論の実践
- 数学・物理シミュレーション(9-11月)
- オイラー法を用いた物理シミュレーション
- 等速直線運動・等価速度運動・自由落下
- ロケットの逆噴射・雨水の落下
- 単振動
- 数学とプログラミング
- ベクトル・行列
- 論理と集合
- 順列・組み合わせ
- オイラー法を用いた物理シミュレーション
- プログラミング活用事例の紹介(11-1月)
- ハードウェア/マイコン/IoT機器のプログラミング
- 統計プログラミング
授業資料
ソースコード等(GitHub)
第1回 イントロダクション
スライド: python-1-introduction
第2回 演算 モジュール リスト
スライド: python-2-calc
第3回 条件分岐 if else elif
スライド: python-3-if
第4回 繰り返し文
スライド: python-4-forwhile
第5回 リストの活用
スライド: python-5-list
第6回 関数
スライド: python-6-function
第7回 再帰
スライド: python-7-recursion
第8回 スタック・キュー
スライド: python-8-stack-queue
第9回 関数のスコープ 逆ポーランド記法
スライド: python-9-scope-reverse-polish-notation
第10-12回 物理シミュレーション(オイラー法)
スライド: python-10-physics
スライド: python-11-physics2
スライド: python-12-physics3-robotics-fixed
第13-14回 数学 (ベクトル・行列・集合・順列・組み合わせ)
スライド: python-13-vector-matrix-fixed
スライド: python-14-set-permutation-conbination
参考資料
- 渡辺有隆[著], Ozy・秋葉拓哉[協力], プログラミングコンテスト攻略のためのアルゴリズムとデータ構造, マイナビ, 2015
- Bill Lubanovic[著], 斉藤康毅[監訳], 長尾高広[訳], 入門 Python3, O’REILLY Japan, 2015
- John V. Guttag[著],久保 幹雄 [翻訳],世界標準MIT教科書 Python言語によるプログラミングイントロダクション第2版: データサイエンスとアプリケーション 近代科学社; end edition,2017
- 大重美幸[著], 詳細! Python3 入門ノート, ソーテック社, 2017
- ロベール[著], ロベールのC++入門講座, マイナビ, 2007
- Anany Levitin, Maria Levitin[著], Algorithmic Problem Solving with Puzzles and Games, O’REILLY, 2014
- 北村 愛実, Unityの教科書 Unity2019完全対応版 2D&3Dスマートフォンゲーム入門講座, SBクリエイティブ, 2019
- その他参考資料 https://ryoiijima.hatenablog.com/entry/2020/12/19/170214