理学部化学科・化学プログラミングを担当して
奥村 光隆(大学院理学研究科 化学専攻)
1. はじめに
私は、理学部化学科3年次1学期の化学プログラミングをこの4月から担当しています。自分が学生時代のときには、ちょうど基礎工学部の前に情報教育棟ができて基礎工学部化学工学科のプログラミング演習の授業がIBMのメインフレームの端末で行われていました。端末でのプログラムの編集やコンパイルに非常に時間がかかり、プログラムの修正後に再コンパイルをするために何もできないでボーっとしていたことをよく覚えています。それが、現在ではLinuxベースのPCを使ってプログラムの編集、コンパイルなどが高速にできるようになったことを考えると、学生の情報教育を取り巻く環境も隔世の感があると感じざるを得ません。さらに携帯電話でのメールやインターネットなどの普及によりコンピューターとそれに付属したマルチメディア環境は、現在の社会の中で不可欠のものとなっています。一方、実際の研究現場では測定装置に組み込みの制御装置はますます高機能化しており、得られたデータの解析さえもほとんどボタンひとつを押すだけということになっています。その結果、データの解析や処理はますますブラックボックスとなってきています。このような観点から、自分で、実験データ処理には欠かせないような基礎的な題材を例にとり、簡単なプログラムを自分で作成しデータ処理がどのように行われているかを理解するところに授業の主眼を置いています。そのため、プログラミング言語としては、いさかか古めかしいですがFortranを用いて授業を行っています。これは、化学系のソフトの中にはFortranでソースが書かれているものが数多くあることや、実際の測定装置などではCではなく依然としてBASICなどが組み込まれた装置も数多く存在しているという現実があり、そのようなソースコードを将来見る可能性が少なからずあることに由来しています。
2. 授業を行ってみて
この授業はサイバーメディアセンター豊中教育研究棟でおこなっています。端末自身は理学部の中にもあり、時間外などにはそちらで課題提出のために端末を操作している学生も多いようです。自分自身が、このシステムを使い始めて日が浅いので不慣れなところも多いのですが全体としては使い勝手のよいシステムかと思います。ただし、50人程度の学生の演習を行っているとシステムの不調なのかは不明なのですが突如、エディターが正常に動作しなくなったりするような多少のバグも少なからず存在しているようにも思われます。特に計算機を使うことが専門とならないような学生たちには、このようなシステムの問題は、計算機に対する不信感を生み学習意欲を削ぐ場合もあると思われます。ですからできる限り安定したシステムが構築されることを願ってやみません。
授業内容は、最初の数コマでFortranの文法を説明し、必要最小限のUnixのコマンドを覚えてもらうことからスタートしています。学生たちは計算機を使うことやアプリケーションを使うことには慣れていますが、計算科学が専門でない生徒にとっては、計算機言語となると昔の学生よりもなじみが薄いのではと思ってしまいます。(これは計算機自身が家電化していることのあらわれなのでしょうか?)別な意味で驚いたのは、学生たちのキーボード入力のことです。昔はキーボードをうつのに四苦八苦している学生が殆どでしたが、今の学生はそこそこ速く、コンピューターリテラシー教育が浸透しているということを実感しました。そしてそれ以降の授業では、講義ごとに課題となる計算手法の説明を行い、例題を実習させます。そして授業の最後に提出課題を出してレポートを提出してもらう形にしています。最初は、行列要素の取り扱いなどからスタートし、行列要素の演算などを行うなど、実際の演算をコンピューターにやらせる過程を学び、要素の並べ替えや標準偏差や級数展開など、今までに学校で習ったことはあるが実際にどのようになるかを実際に手を動かしてあまり確認したことがない数学の確認から始めています。そして簡単なモンテカルロシミュレーションなどを実際にプログラムし、計算機で解く計算機実験的なことも行っています。このように実習が主な授業になるため、学生からの質問が多く寄せられます。それに対応するために研究室の若手スタッフに協力をお願いしており、比較的スムーズに学生の質問に対応できていると考えています。4月から数えると9コマの授業を行いましたが、学生も授業に徐々に慣れてきて授業の終了後にも質問が多く寄せられるようになってきており喜んでいます。
3. 今後の演習についてと雑感
私が大学生だったころは、ちょうどMacintosh II(当時は高価な計算機でした)やUnixワークステーションが研究室に入ったころで、プレゼン用のOHPが非常に視覚に訴えかけるものに変化していく過渡期だったように思います。現在では、プレゼンと言えばパワーポイントで行い、動画が張り込まれていたりすることが当たり前になっています。データ処理においても、以前は大型計算機やワークステーション上で使っていたものと同等の機能を持ったソフトウェアがノートPCでも使えるようになっています。しかし、実際に計算機が行っていることはまったく変わっていないわけで、その処理のプロセスを知るということは逆に昔よりも重要になっているのではないかと考えます。
この授業では、最後に簡単な量子ダイナミクスのプログラミングを行い、その時に、視覚化のためにMathematicaなどのプログラムを使うことを考えています。このようなソフトが容易に使えるだけのパワーを卓上に乗るような計算機が有するようになったのは非常にありがたいと思います。またこのようなソフトウエアの恩恵を、他の授業の学習のためにも使ってもらいたいと考えています。
いろいろな時代とともに演習の中身は徐々に変えていけないと思いますが、私はこの演習について大切なことはプログラムを作る過程がどのようなものでどのような作業を必要とするか、身をもって体験することだと思います。ひとつの目的を達成するために小さなプロセスを組上げ、全体として矛盾の無いようにひとつのプログラムを完成させるという工程を体験することにより論理的に全体の流れを理解できる能力を身につけることができたらと思っています。たかだか半期の授業ではありますが学生が少しでもこのようなことを考えながら演習を行い、プログラミングの力を身につけてくれることを望んでいます。