プログラミングで学ぶ科学(数学・物理)

High School, Waseda University Honjo Senior High School, 2019

概要

早稲田大学本庄高等学院にて「プログラミング」の 授業を担当しました。 高校3年生の希望者が履修可能な選択科目となります。 本科目は、早稲田大学にて情報工学の学士、修士号を取得し、情報・数学の教育免許を所持する講師 によって設計されています。 (普通科の)高等学校において、初の試みとなります。

目的

アルゴリズムを理解しながら、実際のプログラムに落とし込むことによって論理的思考力を身につける。 数学・物理で習った内容をプログラム上で再現し、プログラミングの中に潜む理系的な要素を明らかにする。 プログラミングが楽しい・面白いと思える興味のきっかけを提供する。 言語 自然言語は日本語を使用する。(留学生・日本語が苦手な学生が含まれる場合は英語により別途対応)

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

授業計画

  • プログラミングの基礎・文法(4-6月)
    • Python or C++ による基本的なプログラミング
  • 代表的なアルゴリズム(6-7月)
    • アルゴリズムを利用した待ち行列理論の実践
  • 数学・物理シミュレーション(9月)
    • ロケットの逆噴射
    • ゲームのあたり判定シミュレーション
    • ゲーム作成体験(10月)
    • Numeronの実装・テストプレイ・デバッグ
  • プログラミング活用事例の紹介(11-12月)
    • ハードウェア/マイコン/IoT機器のプログラミング
    • 統計プログラミング
    • Alexaスキル作成体験
    • アイディアソン体験

参考資料

  • 渡辺有隆[著], Ozy・秋葉拓哉[協力], プログラミングコンテスト攻略のためのアルゴリズムとデータ構造, マイナビ, 2015
  • Bill Lubanovic[著], 斉藤康毅[監訳], 長尾高広[訳], 入門 Python3, O’REILLY Japan, 2015
  • 大重美幸[著], 詳細! Python3 入門ノート, ソーテック社, 2017
  • ロベール[著], ロベールのC++入門講座, マイナビ, 2007
  • Anany Levitin, Maria Levitin[著], Algorithmic Problem Solving with Puzzles and Games, O’REILLY, 2014
  • 北村 愛実, Unityの教科書 Unity2019完全対応版 2D&3Dスマートフォンゲーム入門講座, SBクリエイティブ, 2019

備考

  • 授業中、理解度確認のために生徒にアルゴリズムの考え方を説明してもらうことがある。
  • 雑談として、講師が趣味で作成するソフトウェア・ハードウェアの共有を行う。
  • その他、情報領域やそれにかかわる科目に隠された斬新でシュールな考え方・アイディアを共有する。