学科内で,プログラミングに関するカリキュラムや,科目内の指導内容を変更しようという動きが出ています.
毎年大小変えていくことで,ちょうどいい教え方を見つける,というアプローチはあっていいと思いますが,他の教員に働きかけるのは,そう簡単なものではありません.
最近目にした事例を2つ,書くことにします.学生は今も,離散数学という科目の中で,束(lattice)だとかハッセ図だとかを教わっているかなと,シラバスを見てみると,どちらも書かれていました.なのですが,別のところで,ありゃっと思いました.というのも,そのシラバスの中に「バッカス記法」という表記があったのでした.過去問でも,この言葉が使われていました.
自分の科目のスライドでは,再帰の事例の中で,「BNF記法」と書いています.BNFのFはFormすなわち記法を意味し,だから「BNF記法」は「頭痛が痛い」と同様の重複を持った表現です.それでも,広く使われているため,この書き方にしています.「バッカス記法」は,それを避けた(そしてこれも十分に周知されている)言い方ですね.
教員それぞれで授業で使用する言葉が違っていて,それが同じものを指していることを言わないというのでは,教員間の連携が成り立っているとはいえません*1.それはそれとして,「バッカス記法」か「BNF記法か」については,冬休みに資料に手を加えて*2,同じものだと分かるようにしておくことにします.
もう一つは,上の学年のプログラミング科目担当の先生によるぼやきで,「学生に,自動変数と動的変数の違いを質問したら,誰も答えられなかった」というもの.これは「動的変数」をWebで調べればおしまいです.
いや,おしまいなわけありませんね.動的に作られる変数という意味であれば,それは自動変数と同一視しなければなりません*3.mallocや,C++のnew演算子で得たメモリ内領域またはインスタンスが割り当てられる変数(変数が自動なのか静的なのかは別にして,その参照する先を,実行時に動的に確保しているから「動的変数」)という意味かなと思ったのですが,それだと,「動的」と「変数」の係り受け関係を的確に表したものとは思えません.
結局のところ,動的変数という言葉は,Cのプログラミング授業で---それが言い過ぎだとするならば,私の授業の範囲内では---出る余地のないものなのです.
といった個別の事例は,いくらでも挙げられるのでしょうが,これからどうすべきか.
問題解決の優先順位から言うと,個別の科目のてこ入れではなく,教員間の連携でしょう.
同一セメスター内,もしくは連続するセメスター間で,何を学ばせ身につけてもらうべきかを洗い出した上で,どの概念はどの科目で教えている*4,どの技法はやっていないとすればうちの科目で指導しましょう,と展開できるわけです.セメスターごとの達成目標さえ共有されておらず,個々には持っているとしても教員間で摺り合わせができていないのが,実情です.*5
学生への働きかけを,考えてみますか….思い浮かんだのは,「ラーニング・ポートフォリオ」です.1冊,そんな感じの本を積ん読*6にしてしまった記憶があります.Webで得られる情報としては,https://mercury.med.saga-u.ac.jp/el2010/mod/resource/view.php?id=393のpp.2-5が分かりやすいと思います.
特にプログラミングに限定したとき,それまでの科目で,そして今受講している科目で,どんな課題を解いていて,解くために何を考え,結果としてどうなったか(出力とそれに対する考察など)を,ときには指定のプログラミング言語で,ときにはプレーンテキストで,書き残せばいいのです.
というと,「科目ごとにディレクトリを分ける」ことが,コーディング・ポートフォリオの第一歩になってるように思えてきました.2年後期の演習科目で,自動回収をしやすくするよう,ディレクトリ名を固定にしていた*7のは,この点で効果があると言えるのかもしれません.
関連:
- 情報系学科の学生が在学中に学んでほしい14個のプログラミング技術(1/2) - わさっき
- 情報系学科の学生が在学中に学んでほしい14個のプログラミング技術(2/2) - わさっき
- 個人攻撃の罠 - わさっき
*1:学科外の方へ:私の担当しているプログラミング科目も,離散数学も,1年後期の必修科目です.また数年前,他の科目で再帰的構造が講義でどのように取り上げているかを,離散科目の先生ほか何人かに問い合わせ,情報をいただいたこともありました.
*2:少なくとも,授業で直接取り上げていないサンプルプログラムのいくつかは,あれを見ただけで内容が分かると思えないので,コメントをつけておきたいと考えています.
*3:授業で毎年時間をとって解説している,「ソースファイル上での,変数の有効範囲」と「実行時,変数に結びつけられるオブジェクトの生存期間」の区別を,思い出さずにはいられません.
*4:もちろん,ある科目だけで教えているからすでに身についているはず,と考えるのは良くありません.同時期に複数の科目で教えることで,より定着しやすくなるでしょうし,あとのセメスターで,すでに学んでいるはずの概念などの理解度テストをしてみて結果が思わしくなかったとき,そこの授業で必要なことを説明し,詳細はすでに教わった授業を復習することとするのが,健全な進め方のはずです.
*5:当雑記は学科教員に向けて書かないよう努めていますが,図らずもご覧になった先生へ:近い将来実施されるミーティングですが,その摺り合わせで終わってしまうと,指導内容のてこ入れまで手が回らないことが想像できます.まあミーティングの進め方,落としどころ,今後の展望については,明快な考えを持てていないのですが.
*6:死語か.
*7:ただしファイル名までは完全固定ではなく,自動回収を導入した年度から,今年度も,最後の課題のファイル名は任意として,学生に考えさせています.