プログラミング授業シラバス (2020年度)

2020年  選択科目「プログラミング」

概要

早稲田大学本庄高等学院にて「プログラミング」の 授業を担当しました.
本年度は,プログラミング必修化に向けて,数学・物理学との連携を目的とした授業を行いました.

今年度は新型コロナウイルス感染症流行の影響で一部オンラインで実施したため,休校期間中に実施した内容を一部公開いたします.

目的

  • アルゴリズムを理解しながら,実際のプログラムに落とし込むことによって論理的思考力を身につける.
  • 数学・物理で習った内容をプログラム上で再現し,プログラミングの中に潜む理系的な要素を明らかにする.
  • プログラミングが楽しい・面白いと思える興味のきっかけを提供する.

言語

自然言語は日本語を使用する.(留学生・日本語が苦手な学生が含まれる場合は英語により別途対応)

授業ではPython, Pseudocodeを用いて説明を行うが,提出課題のプログラミング言語は C, C++, Java, Pythonの中から選択することができる.

授業計画

  • プログラミングの基礎・文法(4-6月)
    • Python or C++ による基本的なプログラミング
  • 代表的なアルゴリズム(6-7月)
    • アルゴリズムを利用した待ち行列理論の実践
  • 数学・物理シミュレーション(9-11月)
    • オイラー法を用いた物理シミュレーション
      • 等速直線運動・等価速度運動・自由落下
      • ロケットの逆噴射・雨水の落下
      • 単振動
    • 数学とプログラミング
      • ベクトル・行列
      • 論理と集合
      • 順列・組み合わせ
  • プログラミング活用事例の紹介(11-12月)
    • ハードウェア/マイコン/IoT機器のプログラミング
    • 統計プログラミング
    • Alexaスキル作成体験

授業資料

第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

備考

授業中,理解度確認のために生徒にアルゴリズムの考え方を説明してもらうことがある.

雑談として,講師が趣味で作成するソフトウェア・ハードウェアの共有を行う.

その他,情報領域やそれにかかわる科目に隠された斬新でシュールな考え方・アイディアを共有する.