わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

C復習学習案

1年後期のCプログラミング講義を落とした人,または合格したけど勉強し直したい人に向けて,90分×14週で復習授業をするとしたら,どんな内容にすればいいか,ちょっと考えてみました.
学生は20名程度とします.教員は自分一人.ただし,復習教育に協力的な同僚がいるものとします.またTAが2名程度つくものとします.
1回の授業ですることは,毎回同じです.

  • ソースファイルと問題文・解答欄が書かれた用紙(問題解答用紙)を受け取ります.
  • よーいどんで,ソースファイルを打ち込みます.
  • 問題の最初は,「これこれすると,出力がなになにとなることを確認しなさい」です.よーいどんから,最初の問題が正解するまでの所要時間を求めます*1
  • 問題の2番目以降は,そのソースファイルにちなんだ質問とします.例えば,指定した行の処理を記述する,関数の仕様を書く,使用している演算子を列挙する,ある入力を与えたときに指定行で変数に代入される値を答える,等価な書き換えをする,など.文法などの見直しに,書籍を参照してもいいし,インターネットで調べてもいいことにします.
  • 適当な時間になったら,答え合わせをします.

工夫することとして,

  • ソースファイルと問題文は,毎回変えまして,ある回はポインタ,別の回は関数,といったテーマを設定します.「前のと同じ」で,タイプ時間や解答の正確さの向上を見るというのもいいかもしれません.ソースファイルは,うちの授業では初年度から公開してますんで,そこから探しましょう.
  • 協力的な同僚に,あらかじめ問題解答用紙を渡し,問題の最初を実際にやってもらいます.そして所要時間を求めます*2.最短または平均の時間を「先生の所要時間」として,学生に提示し,これを目指してもらいましょう.なお,先生側では,自分の慣れた環境やツールを駆使して,効率よくタイプしていきます.例えばEmacs(に限りませんが)の自動インデントや動的略語展開は当然でしょう.
  • 授業中,こちらで想定している時間までに,問題をすべて解き終えた人は,教員かTAに答えを見せます.間違いがあれば,問題番号だけが伝えられます.そして考え直すわけですが,その際,初めに書いた答案を消しゴムで消さず,横線を引くものとします.試験になったら,「そこは間違い」と言ってくれる人はいません.消しゴムで消すと,思考過程も消えてしまい,まずいのです.
  • 問題をすべて解き終え,正解なら,そうですね,ソースファイルの内容を最初の行から日本語で説明する(書いていく)というのはどうでしょうか.
  • 問題解答用紙は毎回回収し,教員とTAとでチェックします.所要時間は,分布を表かグラフにします.目立った間違いは,次回授業で解説するのもいいですね.

こういう授業の回数を重ねるうちに,タイプ速度が向上し,決まり文句を覚え,プログラムの1行1行,そして関数やプログラム全体が「読める」ようになるといいのですが.

*1:経過時間を求めるツールは,GNOMEにあったかな? まあ,いいのがなければ,教員がストップウォッチを持てばいいでしょう.

*2:ソースのまずいところを指摘してもらえればなおよしです.