わさっきhb

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

自在に

昨日の授業は,4つのプログラムを紹介し,雑談やおさらいを入れ,内容が盛りだくさんだったのに,なぜか終了時間には余裕がありました.学生には消化不良かもしれません.来週の演習室での授業で,おさらいをしながら定着を図りたいと考えています.
そこで,「自在にCでプログラミングできる能力」を,2年以降で身につけてほしいとスライドに書き,そして話しました.
それにしても「自在に」とは,何ができればいいのか,その後,考える機会がありました*1
Cだの学生だのは別にして,まずは自分のことを.
私は,授業に研究にRubyを活用しています.ちょっとしたツールならRubyで書くし,「誰かが作ってそうだ」と思ったら,Firefoxの検索窓に打ち込んで探します.
しかし,Rubyスクリプトを一つ書くとき,リファレンスマニュアルが手放せません.ドキュメントからリンクされているReferenceManualRenewalProjectを起点にします.ソースに参照箇所を残しておきたいときは,ブラウザでアクセスして,コメントとして,URLを控えます.出典不要で,頻繁な参照をしたいときがありますので,chmファイルを手元に置いて使用します*2
ときにはirbで挙動を確認することもありますが,基本的にこのマニュアルなしではコーディングがまともに進みません.開発効率は10分の1くらいになるでしょう.なので,Rubyで自在にコードが書けるとは言いがたいです.
英語で論文を書くのも,そうです.辞書がないと,「嘘でもいいから書く」ということさえできません*3.辞書は,単語の意味や使い方を知るというだけでなく,書きたいことを英単語の並びとして表現するのに,何を選べばいいかをアドバイスしてくれる,発想支援ツールとなっています.
本数は別として,研究者として,英語論文を執筆することは苦ではありません*4.しかし自在に英語を操っているわけではありません.会話になればなおさらです.もう4年前のこと,我ながらよくもまあ,フランスからの留学生を指導したものです.
それで「自在に」に話を戻すと,「自在にCでプログラミングできる能力」を身につける方法は何なのかです.2年の授業の中で,担当の先生がそれまでの経験をもとになさっていくので,学生はそれに耐え,課題をもとにコードを書き,大量のコンパイルエラーを見てデバッグし,実行時のエラー,特に論理エラーに悩み,先生やTA,他の学生の助けを得て完成させれば,点数はともかくとして合格点になるはずです.
そのとき,合格=能力が身についた,ではないのが厄介です.
科目に合格したら,翌年度以降に同じ科目を受けることはできません.その意味で,「合格」は卒業するまで,記録として残り,卒業に必要な単位の一部となります.
しかし,一旦身についたと思った能力でも,維持しなければ,落ちていきます.絶対に下がらない能力もあれば,ちょっと復習すれば「しゃきーん,ぱわわっぷ」になれることもあるでしょう.いや,イチから勉強し直しということだって,あるかもしれません.
学生に「身についた感」がなく,春休みや夏休みのあとで教員が「教え直し」というのでは,非効率な学習と言わざるを得ません.学生だって自分だって,人は物を忘れる生物だということを前提として,「そのとおりに理解すべきこと」「後で見直せばいいんだけど,今のうちに理解・体得できれば楽しいこと」「情報分野の技術者として,絶対間違えてはいけないこと」など,知識や技能のそれぞれにタグをつけていけば*5,学習や復習のサポートツールになるのではないかなと,思うようになりました.

*1:考えることになったきっかけはいつものように割愛ということで.

*2:今なら,http://doc.okkez.net/archives/200912/からですね.ところでだいぶ前から,ダウンロードしたchmファイルをダブルクリックしても,コンテンツが出ませんが,これはファイルを右クリックしてプロパティを開き,全般タグの下の「ブロックの解除(K)」のボタンを押してプロパティを閉じれば,問題解決です.

*3:どのくらい辞書を引くかは,時速何ワード? - わさっきで調べてみたことがあります.

*4:「これだけ書いて,ここに出せば,まあ行ける」という見通しだとか,なじみの国際会議があるというのが,苦でない要因として言えるのですが.

*5:学生も学生で,自分の知識などにタグづけしてほしいし,この作業はなかなか楽しいと思うのですけどね.