講義ノート集

KUT経・マネ/プログラミング系授業

プログラミング(2023年度 3年生向け)

授業の概要

本講義の狙いは、市販の入門書では習得が非常に困難であるような、タイピング技術、エディターに関する知識、デバッガの使い方、バージョン管理、情報科学の基本的知識、文書作成技術、プログラミング言語の内部の仕組みなど、すぐには役立たなくとも長期的に効力を発揮するようなプログラミングの基礎力を向上させることです。

本講義でプログラミングを学ぶために用いる言語はPythonです。本講義の受講者はRを使ったことがあるので、Pythonの理解は比較的容易です。しかしながら、Pythonには、パソコンやプログラムのことが分かっていないと陥るトラップが多くあり、Rよりもハードルの高い言語です。本講義では、逆にこの落とし穴を詳細に研究することでPythonやプログラムの仕組みを理解することを狙います。

また、講義では、Rとの比較を通して、Pythonの特徴的な挙動に関する解説を行います。プログラミングスキルを向上させるためには、複数の言語の習得を通して、言語の設計における多様な理念に触れることが重要です。本講義であえて二つの言語を比較するのは、学習のスピードアップだけでなく、一つの言語の表面的な文法にとらわれない応用力を得ることが狙いです。

到達目標

本講義の受講者が達成すべき具体的目標は、以下の通りである。

  1. 標準的なエディターであるVS Codeを使いこなす
  2. Markdownファイルによる資料作成ができる
  3. Git/GitHubを用いてアプリケーション開発ができる
  4. 計算機とプログラムの基本的な原理を理解している
  5. Pythonがメモリをどのように使用しているかを理解しており、その知識を用いてバグのないプログラムを作成できる
  6. バグを発見し、取り除くことができる
  7. Pythonを用いて基本的なデータの操作、可視化、統計解析ができる
  8. OOP(オブジェクト指向プログラミング)のコンセプトを理解し、otreeを用いて簡単な実験プログラムを作成できる

注)今年度は上記の「7.統計解析」までを扱う予定です。実験プログラミングに興味が有る方は、単位を取得した後、個人的に教員にご相談ください。

学習教材

皆さんが本講義を通してPythonを学ぶに当たっては、以下の教材を有効活用することをおすすめします。

  1. Python公式ドキュメント
  2. 『独習Python』(教科書)
  3. 本サイト

内容の網羅性で言うと、1>2>3です。本サイトではPythonの標準機能の一部しか紹介できませんので、足りない部分を2の教科書で補うことにします。さらに、プログラミングをしていると、教科書を含む一般向け書籍にはなかなか書かれていないようなことも時々調べなくてはなりません。そのような場合には、最終的には1のPython公式ドキュメントを当たらねばなりません。さらに、公式ドキュメントにも載っていないことは高度な専門書や、ネット上の非公式なドキュメントを積極的に探索してください。

受講に際しての心構え

資料目次

第1回 プログラミング概論

プログラムが動くとはどういうことか、プログラミング言語にはどのようなものがあるのか等、事前に押さえるべき必要最低限の事項を解説する。

第2回 VS Code/仮想環境入門

本講義でプログラミングに用いるエディター(VS Code)の解説を行う。また、Pythonの特徴である仮想環境およびAnacondaの操作、環境設定について解説を行う。

第3回 バージョン管理入門

アプリケーションやパッケージ作成の際に有用なGit/GitHubを用いたバージョン管理について解説する。

第4回 変数とメモリ

変数に値を代入するということが意味するところについて、Rとの比較を通して詳細な解説を行う。その際に、ランダムアクセスメモリ(RAM)について多少のイメージを養うことが必要である。

第5回 データ型と制御構文

Pythonの最も基本的なデータ構造であるリストの操作について解説する。また、Rとの比較を通して、条件分岐やループ処理などの制御構文について学ぶ。

第6回 標準ライブラリ(1)―タプル、文字列、ファイル入出力

リスト以外の重要な組み込みデータ構造である文字列とタプル、そしてファイル入出力について解説する。

第7回 標準ライブラリ(2)―辞書、集合

残った組み込みデータ構造である辞書と集合について解説する。

第8回 関数とモジュール

現代的なプログラミングでは、既存のものを再利用するのが普通である。再利用のための代表的な道具である関数とモジュール、そしてそれらにまつわる諸概念について学ぶ。

第9回 NumPy/SciPy入門

Pythonにおいて数値計算やデータ解析をするために最も重要なモジュールであるnumpyの挙動とそのメリットについて解説する。numpyを乱数シミュレーションや記述統計量の計算について学ぶ。numpyを使った科学技術計算ライブラリであるSciPyを用いて単回帰分析を実施する。

第10回 pandas入門

データ操作のためのモジュールとして標準的なpandasを使ってCSVデータを読み書きし、基本的な記述統計を計算する方法について学ぶ。さらにpandasに搭載されているグラフ機能とmatplotlibモジュールを用いてデータを可視化する。

第11回 statsmodels入門

単回帰と重回帰を例にとり、標準的な統計モデルを納めたstatsmodelsモジュールを紹介する。また、機械学習モジュールのscikit-learnについても軽く触れる。

第12回 OOP入門

大規模プロジェクトや実験プログラミングに必要なオブジェクト指向プログラミング(OOP)について学ぶ。クラス、メソッド、継承、ポリモルフィズムなど鍵となる概念について解説する。

第13回 otree入門

Pythonで実験プログラムを作成するためのフレームワークであるotreeの解説を行う。簡単なサーベイのプログラムを作成する。

第14回 ワンショットゲーム

otreeを用いてワンショットゲームを作成する方法について学ぶ。

第15回 繰り返しゲーム

前回作成したワンショットゲームを発展させ、繰り返しゲームを作成する。また、実験の結果得られるデータの取り扱いについて解説する。最後に、これまで学んできた知識をどのように研究に活かせばよいか解説し、まとめとする。

教科書

『独習Python』山田祥寛 著 (翔泳社, 2020年) ISBN 978-4-7981-6364-2

その他