KUT経・マネ/プログラミング系授業
本講義の狙いは、市販の入門書では習得が非常に困難であるような、タイピング技術、エディターに関する知識、Githubリポジトリの活用、情報科学の基本的知識、Markdownによる文書作成技術、プログラミング言語が動く仕組みの理解など、すぐには役立たなくとも長期的に効力を発揮するようなプログラミングの基礎力を向上させることです。
本講義でプログラミングを学ぶために用いる言語はPythonです。本講義の受講者はRを使ったことがあるので、Pythonの理解は比較的容易です。しかしながら、Pythonには、パソコンやプログラムのことが分かっていないと陥る落とし穴が多くあり、Rよりもハードルの高い言語です。本講義では、この落とし穴を詳細に研究し、「どうしてPythonはこんな変な動きをするんだろう?」と考えながら、Pythonやコンピュータープログラムの仕組みを理解することを狙います。
本講義の受講者が達成すべき具体的目標は、以下の通りである。
注)今年度は上記の「7.統計解析」までを扱う予定です。実験プログラミングに興味が有る方は、単位を取得した後、個人的に教員にご相談ください。
皆さんが本講義を通してPythonを学ぶに当たっては、以下の教材を有効活用することをおすすめします。
内容の網羅性で言うと、1>2>3です。本サイトではPythonの標準機能の一部しか紹介できませんので、足りない部分を2の教科書で補うことにします。さらに、プログラミングをしていると、教科書を含む一般向け書籍にはなかなか書かれていないようなことも時々調べなくてはなりません。そのような場合には、最終的には1のPython公式ドキュメントを当たらねばなりません。さらに、公式ドキュメントにも載っていないことは高度な専門書や、ネット上の非公式なドキュメントを積極的に探索してください。
プログラムが動くとはどういうことか、プログラミング言語にはどのようなものがあるのか等、事前に押さえるべき必要最低限の事項を解説する。
本講義でプログラミングに用いるエディター(VS Code)の解説を行う。また、Pythonの特徴である仮想環境およびAnacondaの操作、環境設定について解説を行う。
アプリケーションやパッケージ作成の際に有用なGit/GitHubを用いたバージョン管理について解説する。
変数に値を代入するということが意味するところについて、Rとの比較を通して詳細な解説を行う。その際に、ランダムアクセスメモリ(RAM)について多少のイメージを養うことが必要である。
Pythonの最も基本的なデータ構造であるリストの操作について解説する。また、Rとの比較を通して、条件分岐やループ処理などの制御構文について学ぶ。
リスト以外の重要な組み込みデータ構造である文字列とタプル、そしてファイル入出力について解説する。
残った組み込みデータ構造である辞書と集合について解説する。
現代的なプログラミングでは、既存のものを再利用するのが普通である。再利用のための代表的な道具である関数とモジュール、そしてそれらにまつわる諸概念について学ぶ。
Pythonにおいて数値計算やデータ解析をするために最も重要なモジュールであるnumpyの挙動とそのメリットについて解説する。numpyを乱数シミュレーションや記述統計量の計算について学ぶ。numpyを使った科学技術計算ライブラリであるSciPyを用いて単回帰分析を実施する。
データ操作のためのモジュールとして標準的なpandasを使ってCSVデータを読み書きし、基本的な記述統計を計算する方法について学ぶ。さらにpandasに搭載されているグラフ機能とmatplotlibモジュールを用いてデータを可視化する。
単回帰と重回帰を例にとり、標準的な統計モデルを納めたstatsmodelsモジュールを紹介する。また、機械学習モジュールのscikit-learnについても軽く触れる。
大規模プロジェクトや実験プログラミングに必要なオブジェクト指向プログラミング(OOP)について学ぶ。クラス、メソッド、継承、ポリモルフィズムなど鍵となる概念について解説する。
Pythonで実験プログラムを作成するためのフレームワークであるotreeの解説を行う。簡単なサーベイのプログラムを作成する。
otreeを用いてワンショットゲームを作成する方法について学ぶ。
前回作成したワンショットゲームを発展させ、繰り返しゲームを作成する。また、実験の結果得られるデータの取り扱いについて解説する。最後に、これまで学んできた知識をどのように研究に活かせばよいか解説し、まとめとする。