講義情報

講義室の備え付けのPCも利用できますが、自前のコンピュータを持参して講義を受けることをおすすめします。プログラミング環境は第1回目の講義で説明しますが、 Google Colab を用いてプログラミングを行います。各自、千葉大学から発行してもらったGoogleアカウントを確認しておいてください。千葉大が発行するG Suiteアカウントでのみ受講できます。個人で保有しているgoogle アカウントでは受講できないので注意してください。千葉大が発行するG Suiteアカウントをもっていない人は、Moodleにログインする等して確かめてください。

この講義を履修するためには、Google classroomに参加する必要があります。クラスコード「iulhbq6」です。

https://classroom.google.com/c/NjAyOTQ2MDk1MzE1?cjc=iulhbq6

講義は以下の時間帯・場所に対面で行います。

  • 場所: 工学部1号棟5F演習室

  • 時間: 後期金曜2限(10:30-12:00)

教科書

教科書としてPythonで学ぶプログラミング入門を使用します。教科書中の練習問題を講義で扱うので、各自教科書を購入して、講義に持参してください。Google Colab上で、プログラムを実行するための補助資料を準備しています。教科書で扱っているturtleをGoogle Colab上で表示させるためのモジュールを配布しています。

はじめに

この文章は、千葉大学共生応用化学コース後期に開講されている「コンピューター処理」で使う資料です。1回の講義は、60分程度で文法等の説明を行った後、簡単なクイズや例題を自分でプログラミングする流れで進めます。

講義は、 Google Colab を用いてプログラミングと課題の作成を行います。千葉大学から発行してもらったGoogleアカウントが必要になります。千葉大から発行してもらったG Suiteアカウントでのみ受講できます。個人で保有しているgoogle アカウントでは受講できないので注意してください。

プログラミングを習得する意義

工学部の応用化学系に所属する学生にとって、プログラミング能力は必要ないと考えていたら大きな間違いです。化学系の学生がプログラミングを習得する意義は、少なくとも以下の点かと思います。

  1. 機械学習や人工知能の発展で、Cheminformatics による材料開発が急速に普及しつつあります。本講義で取り扱うPythonは、機械学習の分野でよく使われる言語です。化学と情報技術を理解する技術者になるためにプログラミング言語の習得は必須です。すでに合成経路もAIで予測されつつあります。 合成手順を自ら導き出すAl.pdf

  2. お金のかかる化学実験と違って、プログラミングはコンピュータさえあれば一円もかかりません。プログラミング技術があれば、自分のアイデアをすぐに自分のコンピュータで実現できて新しいモノや価値を生み出せます(起業できるかも?)。

  3. 膨大な分析データを処理して必要な情報を引き出すためには、プログラムを作成してデータ処理する場面が研究の現場でよくあります(Excelはデータが巨大になるとすぐに破綻します)。

  4. 小学生からプログラミング必修 」 にあるように、小学生もプログラミングできるようになるらしいので大学生がプログラミングできないとまずいでしょう。

  5. 本田選手もプログラミングをはじめたようです。負けられません。 本田「プログラミングの勉強1日10時間やってる」.pdf

  6. 化学だけ知っているより人間より、プログラミングもできる人間の方が魅力的でしょう。

到達目標

3年生の共生応用化学実験や研究室配属後の研究室活動でデータ処理や解析が必要になった時に、Pythonでプログラムを作成して対応できることを到達目標とします。自習も含めてせいぜい30〜40時間の学習時間でPythonの機能をすべて理解することは不可能です。プログラム作成が必要になった場合に、自分で調べて必要な知識を収集し、目的とするプログラムを完成できるレベルに達すれば十分かと思います。

成績評価

クイズと課題で評価します。クイズと課題の提示は、講義時間後(金12:00)で、締め切りは、その翌週の水16:00とします。期限を過ぎた提出物は受け取りません。 評価の目安は以下のとおりです。

クイズ

新しい文法等を学んだ後の確認クイズで、1回につき3問で3点のクイズです。簡単な問題です。他の人と類似していても減点しません。締め切り期限を過ぎたレポートは採点しません。

課題

ある程度学習が進んだら、すこし長めのプログラムを作成します。 1課題は3 問で1問あたり8点で24点満点です。提出したプログラムの可読性や汎用性で総 合的に採点します。なお、類似したプログラムがあれば、類似した数だけ減点 となります。(類似したものが2つあれば1/2、3つあれば1/3…)"。プログラム の類似性判定は、MOSS(https://theory.stanford.edu/~aiken/moss/)でチェッ クします。

注釈

講義の説明を聞いて講義時間内だけプログラミングの練習を行っても到達目標までたどりつくことは難しいです。講義内容について自分で例題を自作しプログラミングすることを繰り返してください。また理解が曖昧なところは、学生同士で相談したり教員やTA全員に質問するようしてください。

質問対応

金曜2限(10:30-12:00)はクイズ・課題の説明と質問対応の時間とします。講義はオンデマンドなので、各自質問があれば、工学部1号棟5F演習室に来て教員かTAに質問してください。なお、google classroom上で質問する場合、教員とTA2名にメッセージを送るようにしてください。

なぜPython?

これまでにたくさんのプログラム言語が開発され、実際に使われています。プログラム言語はコンパイルが必要な言語とスクリプト言語に大別されます。代表的なプログラミング言語は以下のとおりです。

コンパイル言語

スクリプト言語

C, C++, fortran, Java

Python, Perl, Ruby

プログラム言語の習得は時間がかかります。情報系の学科でもないので、プログラム言語の習得に時間がとられてはいけません。大学の講義で取り上げるプログラミング言語はC言語やfortranが多いようです。この理由として、fortranはスピードを求める数値計算の分野でよく使われるし、C言語は機械語に近く何でもできるからかと思います。ただし、fortranは文字列処理が苦手なこともあり、数値計算以外の分野で使われることは少ないです。また、C言語をきちんと理解して使いこなすまでにはかなりの時間が必要です。

計算スピードを重要としない一連の処理を難しいコンパイル言語を使って行うことは、学習コストを考えるとあまり効率的とは思えません。そこで、到達目標(実験系の研究に必要なプログラムを作成できる)に最小の学習コストで達するために、コンピュータ処理で習得するプログラム言語にPythonを選択しました。 Pythonの特徴は以下のとおりです。

  • 学習コストが低く作成しやすい、読みやすい。

  • コンパイルを必要とせず容易にプログラムを実行できる。

  • 科学技術関連(化学、バイオ、物理、人工知能等いろいろ)の豊富なライブラリ(計算を行う部品)を利用できる。

  • 年収が高いらしい。 (記事参照)

  • 開発環境のセットアップが容易で、はじめて習得するプログラミング言語として最適である。

私(大窪)の経験から言うと、スピードが必要な場合はCやfortranで作成しつつ、簡単なデータ解析プログラムはPythonで行う等、複数の言語を読んだり書いたりする場面が多々あります。1つのプログラム言語を理解すれば、他のプログラム言語を読んだり書いたりするのは比較的容易かと思います。プログラム言語の習得で挫折しないよう、今後の研究生活で使えると便利なライブラリが充実しているPythonを講義で取り上げることにしました。

コンパイル言語(C言語)とスクリプト言語(Python)で、「学習時間」と「プログラミングで実現できること」の関係は下図のイメージです。プログラミングで実現する内容にも関係しますが、だいたい下図のような感じです(完全に個人的な意見です)。

_images/figure.png

自習について

参考図書については、丸善 で探して自分にあった本を探すのも良いです。基本的な文法に関する本は、どの本でも良いです。ただし、PythonによるWeb applicationやデータベースの開発に関連するような本はこの講義内容(Pythonによる科学技術計算)とあまり関係ありません。

Contents