コンピュータ・プログラミングAを担当して


佐藤 博(大学院基礎工学研究科 物質創成専攻)

1. はじめに

私は、基礎工学部化学応用科学科化学工学コース2年次を主な対象として、コンピュータ・プログラミングAの講義を担当しております。2年前に科目名が情報処理入門からかわりましたが、内容は以前と(少なくとも私が学生として受講した1990年度からは)変わらず、FORTRAN77を使用した数値計算の入門の講義と演習を行っております。
 現在の基礎工学部化学工学コースにおける、コンピュータ関連の教育カリキュラムは次のようになっており、このほかにも教育用計算機システムを使用しない科目があります。

1年前期 情報活用基礎
2年前期 コンピュータ・プログラミングA
2年後期 コンピュータ・プログラミングB
3年前期 化学工学演習III
3年後期 プロセス工学B

この中で、情報活用基礎は共通教育の科目で、情報探索、情報発信、コンピューターリテラシーなどを学んでいると聞いております。コンピュータ・プログラミングAからプロセス工学Bまでの4科目で化学プロセスの数値モデル解析までの教育が行われております。
 基本的に化学応用科学科化学工学コースの学生が受講しておりますが、ときどきFORTRAN77の学習を目的とした他学部からの受講希望学生があります。

2. コンピュータ・プログラミングAの内容


 このような位置づけの科目のため、講義と演習をほぼ交互に行う形式で進めております。演習は教育用計算機システムを使用しておりますが、講義は受講生から見て正面に机のある講義室で行っております。

第1回 4月16日 [講義] 数値計算/計算機言語/数値の内部表現/精度
第2回 4月23日 [講義] FORTRANの基礎/宣言文と実行文/変数の型
第3回 5月 7日 [演習] ログイン/コンパイル/四則演算/数値の範囲
第4回 5月14日 [講義] 組み込み関数/分岐(IF)
第5回 5月21日 [講義] FORTRAN文法の補足/繰り返し
第6回 5月28日 [講義] 一変数非線形方程式の解法/収束判定
第7回 6月 4日 [演習] 二分法
第8回 6月11日 [演習] Newton法
第9回 6月18日 [講義] 数値積分法/台形公式/Simpsonの公式
第10回 6月25日 [講義] 上限付き反復(DO)
第11回 7月 2日 [講義] サブルーチン/関数副プログラム/データファイル
第12回 7月 9日 [演習] 関数の数値積分
第13回 7月16日 [演習] 離散データの数値積分
第14回 7月23日 [講義] まとめの講義

 まずは、「型」の概念と数値表現を実感してもらうため、桁あふれを伴う四則演算をできるだけ早い段階で行い、その後、制御構文と簡単な数値解法を交互に提示しながら、原理を図解で理解できる手法に絞って演習を行っております。
 論理的思考を各自身につけてもらうことを目指しており、初期の演習では、教科書にプログラム例が掲載されているような課題を行っておりますが、後半の課題では各自考える必要のある課題を課しております。そのため、最初は皆同様のプログラムであったものが後半はいろいろなプログラムに分かれるため、楽しみながらレポートを採点することができます。特に、最後の課題である離散データの数値積分(台形公式を用いる)では、羅列されているデータの2点目から初めて総和計算がスタートすることになるため、全データを配列変数に保管しておく方法、あるいは最初のデータを直接、一点前のデータを保存しておく変数に読み込むといった方法が昨年までの主流でしたが、本年のレポートでは先頭一行をカットしたデータファイルを用意して、オリジナルファイルと同期して読み込ませるという方法が登場しました。きっと、他にもプログラミングの演習を行っておられる先生方は同じような体験されておられると思います。
(私などリソースの消費を最小にする方向でプログラミングを考えてしまうので、発想が貧困になっているのかなと考えてしまうで、発想が貧困になっているのかなと考えてしまいます。打ち込む人のことを考えて一バイトでも短い命令を選んでいたという経験の弊害でしょうか?)

3. 雑感・要望

 かつて、受講生としてこの演習を受け、その後はTAとしてお手伝いをしてきましたが、かつてはログインできない学生が続出で、そのあとはコンパイルできない問題と順次発生していたものですが、現在はログインできない学生は皆無です。講義のない一年後期も個人的に活用していること窺えます。
 また、システムが基本的に安定していることも感じます。管理運営の皆さんのご努力に感謝しております。
 以前は総合環境(gIDE)を使用しており、これがあちらこちらで落ちていましたが、幸か不幸かgIEDなくなってターミナルを使ってコンパイルと実行を行うように改めてからは安定しております。最近見かけたトラブルとしては、演習時間の終わりのころ、印刷ジョブを発行しようとすると、なぜか多数の人がセグメンテーションエラーが発生するということがありました。
 最後に、要望ないし感じていることを数点挙げさせていただきますと、まず、桁位置の管理できるエディタがあるとよいと感じております。現在はgEDITを使用していますが、どのサイズの固定ビッチフォントを使っても桁位置表示がでたらめです。
 もう一つ感じることは省電力化です。豊中図書館端末でもっとも深刻でしたが、月曜から金曜まで毎日契約電オーバーの連絡がある事態となっており、私の部屋ではPCとハブと照明をきることで協力(エアコンは設定されていません)しております。そうしたある日、サイバーメディアセンターでは輪番で基礎工学部より優先順位が低い日であったのでしょう、28℃で空調が利いており、快適に演習を行うことができました。演習が終わり、でそろそろ帰ろうかとしたとき次の時間の受講生が入室してきています。でふと見るとエアコンの設定温度が25℃に変更されています。講義時間の終わりころには確かに28℃のままでしたから、いま入ってきた次の時間の受講生の仕業に違いありません。複雑な気持ちになりながら、設定温度をもどしました。その後、どうなったのかはわかりませんが。また、最近の学生で感じることは、PCの電源を切ろうとしないことです(長時間再起動しなくても、メモリセグメンテーションを起こしにくくなったためとも言えますが)。かつて、5540が端末であった頃は各自で電源を入れて使用するようになっていましたが、現在は時間内は連続運用となっています。使用時に電源ON(数人の人は運悪くfsckが掛かることになるでしょうから)という昔ながらの運用は難しいかもしれませんが、可能であれば稼働台数の弾力的調整、あるいはHDDのスピンダウンなど(我々には音からしか判断できませんが、スピンダウンは行われていないと感じます)などの対策が望まれます。
 以上、暑さにやられて?とりとめのない文章となりましたことをお詫びいたします。最後に、センターの皆様方、TAの皆さんにはたいへんお世話になりました。ありがとうございました。