情報科学科1年生向けの講義「情報科学基礎」における
サイバーメディアセンターの利用
菊野 亨(大学院情報科学研究科 情報システム工学専攻)
水野 修(大学院情報科学研究科 情報システム工学専攻)
1.講義で目指すもの
情報科学基礎の講義では「コンピュータの動作メカニズム、すなわちコンピュータがどのように動くのか」を理解することを目的としています。そのため、1年生の後期配当科目としてはかなり専門的な内容を取り扱っています。あえてアセンブリ言語を採用して、アセンブリ言語によるプログラミングを体験した後、作成したプログラムを仮想的なコンピュータ上で実際に実行します。なお、アセンブリ言語は情報科学科の3年生になったとき、コンパイラ作成演習で再び利用します。1年生で学んだことが3年生で再び利用されるように、カリキュラム上の工夫も行なっています。
2.講義内容は3部構成
本講義は主に次に示す3部から構成されています。
- コンピュータの構成と動きの理解 まず、基本情報技術者試験で出題される仮想計算機COMET IIを用いて、コンピュータの基本構成や基本的動作について解説します。CPUや機械語命令の構成を説明した後で、機械語命令がどのように処理されていくのかをレジスタ表現とその制御信号系列を用いて可視化します。また、講義で習った内容をCOMET IIエミュレータを用いた演習によって確認します。
- アセンブリ言語CASL IIによる基本プログラミング 次に、COMET IIの上で動作するプログラムを作成するためにアセンブリ言語CASL
IIを学びます。CASL IIも基本情報処理技術者試験で出題されています。本講義では、CASL
IIを用いた基本プログラミング手法について学習します。主な内容は、算術演算、論理演算、シフト演算、ジャンプ命令、入出力マクロ命令といった命令語の文法と意味の理解、基本的なプログラムの作成の体験です。ここでも講義と演習を同時に進めて、理解をより深めてもらいます。
- 応用プログラミングへの挑戦 応用編としてさらに高度な4つのトピックス(具体的には、サブルーチン呼び出し、スタック操作、ビット操作、ソーティング)をとりあげてプログラミング手法を学びます。ここではアセンブリ言語は表現手段の役割を果たしていて、いわゆるアルゴリズムの実現の説明が中心になります。これはプログラムに制約の多いアセンブリ言語の方が(高級言語を用いた場合に比べて)アルゴリズムのエッセンスをうまく伝えることができるからです。
3.講義担当は2×(二人三脚)で
1人の学生から見ると講義と演習は二人三脚で進められているように見えます。まず、80人を一度に教えることが難しいため、2クラスに分けています。平成14年度の場合、講義についてはクラス#1は情報科学研究科の今瀬真教授の担当となり、クラス#2は菊野亨教授の担当となる予定です。また、プログラム演習も2クラスに分けて行いますが、担当するのは情報科学研究科の水野修助手1人です。つまり、学生は今瀬教授の講義と水野助手の演習か菊野教授の講義と水野助手の演習かのいずれかをとることになります。講義で知識を仕入れた後、演習で実際に試してみるのが原則です。演習は2クラスを同時に行えないため、変則的なスケジュールになっています。なお演習には毎回TAを2名配置し、演習中に発生する学生からの様々な質問に丁寧に回答してもらっています。
4.スケジュール(平成13年度)
平成13年度は次に示すスケジュールで講義と演習を行いました。初めは基本的な知識をつけるために講義をまとめて行い、次第に演習が間に入っていきます。なお、演習については毎回レポートの提出が義務づけられています。最後は、再び高度な知識を講義形式で学びます。(実はこの間にも、レポート提出の遅れている学生は演習を続けることになります。)
|
10/10 |
15 |
22 |
31 |
11/5 |
12 |
19 |
26 |
12/3 |
10 |
17 |
1/7 |
14 |
21 |
28 |
2/4 |
11 |
18 |
| クラス#1 |
講義 2コマ |
講義 |
演
習 |
講義 |
休 |
演習 |
講
義 |
演習 |
講義 |
演習 |
講義 |
休 |
祝 |
講義 |
講義 |
講義 |
祝 |
試験 |
| クラス#2 |
講義 2コマ |
講義 |
講義 |
演習 |
休 |
講義 |
演習 |
講義 |
演習 |
演習 |
講義 |
休 |
祝 |
講義 |
講義 |
講義 |
祝 |
試験 |
5.サイバーメディアセンターでの演習環境
実際にアセンブリ言語でのプログラムを作成するために、サイバーメディアセンターで各クラス共に計4回ずつの演習を実施しています。(実際には、上でも述べましたように6回~10回の自発的な演習も行っています。)
平成12年度までは、大崎博之先生(現情報科学研究科助教授)が作成されたCASLアセンブラ(casl)とCOMETエミュレータ(comet)を利用していました。平成13年度から情報処理技術者試験が改正されたのに伴い、
2つのプログラムを現在の仕様であるCASL II、 COMET IIへと拡張したプログラムcasl2、comet2を利用しています。これらはすべてコマンドラインから利用するアプリケーションです。
ここで利用しているcasl2アセンブラは、アセンブリ言語CASL IIで書かれたプログラムをcomet2の機械語命令に変換します。また、comet2エミュレータはこの機械語命令を読み込んで実行するだけではなく、ステップ実行やブレークポイントの設定、逆アセンブルといったプログラム開発のために必要な機能を一通り備えています。
現時点ではプログラムcasl2、comet2はサイバーメディアセンターの環境にはインストールされていないため、自分の環境を設定して利用する必要があります。(なお、旧版のcasl、cometはインストールされています。)また、これらのプログラムはperlを用いて記述されており、perlの動作する環境さえあればどこででも実行できます。そのため、casl2、comet2のプログラムを持ち帰り、自宅のPCなどで実行している学生も見受けられます。
演習のレポートはLaTeXで書くことを条件にしています。これは、できるだけ早いうちからLaTeXを使った文書作成に慣れてもらうことも期待しているからです。
6.学生とのQ & A
本講義の演習のためにWebを利用した掲示板システム(これはセンターの外に設置しています)を導入しています。そのねらいは典型的な質問やその回答はできるだけ受講者全員で共有することにあります。こうすることによって、学生の(自分だけが分からないのではないかという)不安感を除く、同じ質問に繰り返し答えるというTAの負荷を軽減することが達成されています。
7.あとがき
この講義・演習ではサイバーメディアセンターの設備の華やかな部分はほとんど使っておりません。目の前にあるコンピュータの動作を学ぶにはちょうど良い動機付けになっているかも知れません。
当初はアセンブリ言語の見た目の難解さに手を焼き、コマンドラインから利用するcomet2エミュレータを敬遠する1年生がほとんどのようです。しかし、講義が終盤になるに従い、「アセンブリ言語でのプログラムは楽しい」という声が多く聞かれるようになります。そうした意見を聞くと、この講義・演習が若干難解ではあるが1年生向けの専門教育科目として一定の役割を果たしているという実感を持つことができます。
参考図書
[1] 八鍬幸信、CASL IIの総合研究(平成13年度)、技術評論社、2001。