Programming Practice (Mathematical Applications)

Numbering Code U-LAS30 20011 SJ11 Year/Term 2022 ・ Second semester
Number of Credits 4 Course Type Seminar
Target Year All students Target Student For all majors
Language Japanese Day/Period Tue.4・5
Instructor name TSUIKI HIDEKI (Graduate School of Human and Environmental Studies Professor)
Outline and Purpose of the Course Python 言語は,プログラムが書きやすいこと,強力なライブラリが存在することなどから,広く使われています。この演習の目的は2つあります。一つは,プログラミングの入門から始めて Python によるプログラミングができるようになることです。もう一つは,手続き的な処理をプログラムに行わせること, データ処理を行い結果を可視化することなどを通じて,数学の理解を深めることです。ニューラルネットについても触れます。それを通じて,プログラミングを数理的な勉強や研究の道具として用いる能力を身につけます。


Course Goals Python 言語でプログラムを書けるようになること。
それを,数学の理解,データ処理などに利用すること。
プログラミングによる問題解決能力を高めること。
Schedule and Contents 下記の内容を扱う。全体で 15 回の授業を行うが,この順番で行うのではなく,簡単な内容から高度な内容へと進むように,順番を組み替えて行う。毎回の内容の詳細は,下記オンラインテキストを参考にされたい。括弧の回数は,それぞれの内容を扱う回数の目安である。

A: Python 言語について,以下のことを学ぶ。(8回)

(1) Jupyter Notebook を使おう
(2) Python プログラミングができるようになろう
変数,制御構造,リスト,関数,クラス定義,再帰呼出し,オブジェクト指向など
(3) numpy, matplotlib, どのライブラリを使おう

B: 数学的現象についてプログラミングを通じて理解を深めるような演習を行う(4回)。
具体的には,次の内容を考えている。

(4) 行列について理解を深めよう
逆行列,固有値と固有ベクトル,線形変換などについて,プログラミングをすることにより,また,可視化をすることにより,理解を深めよう。
(5) 微分方程式を数値的に解こう
(6) 多腕バンデッド問題とベイズ推定
確率の分からない複数のスロットマシンを引くアルゴリズムを考えよう。それを通して,自分でアルゴリズムを組むこと,確率分布の基本的な考え方,ベイズ推定などについて学ぼう。
(7) ニューラルネットの基礎
keras ライブラリを用いて手書き数字を認識するニューラルネットワークを作ろう。それを用いて,機械学習の基礎を学ぼう。

C: 最終課題(2回)
授業中に具体例として与えた数学的な問題や,その他の問題について,プログラムを書いて実行することにより調べ,Jupyter Notebook を用いて,プログラムとその実行結果を含んだ解説を作ろう。最終回は,それについての発表を行う。

D: フィードバック(1回)
Evaluation Methods and Policy 最終課題(50%)以外にも,提出課題をいくつか与える(40%)。また,毎回の演習の時間に行った内容を提出してもらう。それらの課題の出来具合や, 授業に対する取り組み具合も評価する(10%)。
Course Requirements 微分積分学A, B, および,線形代数学 A, B を,履修済みであるか履修中であることが望ましい。
Study outside of Class (preparation and review) 自分のパソコンにも,pytnon をインストールし,授業の復習をするだけでなく,数学などの授業でアルゴリズム的なことが現れたら,プログラムを書いて,動かしながら理解する癖を身に着けよう。
Textbooks Textbooks/References 下記関連URL掲載のオンラインテキストを利用する。
Related URL https://github.com/HidekiTsuiki/python
PAGE TOP