力を入れている担当科目で,確実に理解してほしいこと,後の科目や研究室配属後にも活用してほしいことを,見直してみました.
科目は3つです.
- 情報処理II(1年後期)
- 情報ネットワーク演習(2年後期)
- 情報セキュリティ(3年前期)
情報処理IIの表のテーマは,「Cプログラミングの文法と技法」と「プログラムを日本語で説明する方法」です.レポートでも試験でも,そのあたりを確認できる内容を出題しています.
裏のテーマも明確で,第8回,ちょうど真ん中の授業のときに言っていて,スライドにも書いている「関数を自分で定義し,変数の利用方法・範囲を明示的に制限することで,適切な機能分割(モジュール化,再利用)を図る」です.長いか.
凝縮してみるなら,「スコープ」です.関数も変数も,宣言してからどこまでの範囲でその名前が有効というのが決まります*1.ライブラリ関数を理解するにはヘッダファイルだとか仕様(C言語の解説書*2)に当たるか,使って覚えてしまいましょう.これをプログラミングの外に応用すると,読んだり聴いたりしている中で,知らない言葉が出てきたら,辞書やWeb検索などを活用して,言葉の意味だけでなく使われ方や背景事情も学び,自分でも使ってみようと心がければいいのです.
一つ飛ばして,情報セキュリティを検討します.表のテーマは,今年度の場合第2回授業で説明した言葉を使って,「様々な観点での,情報資産の守り方」です.AESとRSAだけを教える*3のでは,今のネットワーク社会で情報分野の卒業生としてやっていくには不十分と考え,大きいトピックと小さいトピックを織り交ぜて進めています.
裏のテーマもあります.security by obscurity*4です.先週の授業で,「公開・検証されていない暗号アルゴリズムを使うのは『隠すことによるセキュリティ』の典型例であり,解読されやすい」として取り上げました.
「security by obscurity」が最も凝縮された表現だと思うのですが,日本語で少々近いことわざに「下手の考え休むに似たり」*5があります.その際,「素人のアイデアにはすぐ欠陥が見つかって無意味」というよりは,「素人のアイデアをもとに検討をしても,すぐ欠陥が見つかって場当たり的に修復して,その繰り返しで,完成/解決に至らない」と解釈するのがよさそうです.そうすると,セキュリティ以外にも適用できそうですね.
やっと,情報ネットワーク演習です.2人担当ですが,もちろん自担当分に限定します.表のテーマはこれまでどおりです.すなわち,「CでのTCP/IPプログラミング」と「HTTPを使用するアプリケーションの作成」です.選択科目ということ,また時間数の事情もあり,それぞれの後ろには「を身につけること」ではなく「を経験すること」を付けるのがよさそうです.
上述の2科目と同じように,裏のテーマを考えてみました…「プログラミングのしかたを確立すること」でしょうか.しかしまだ,確固たるものにはなっていません.
脆弱と感じている理由をいくつか挙げてみます.一つ目は,プログラミングという行為の位置付けです.コーディングと同じとする解釈があります.すなわち十分にセッティングされた環境下で,仕様を満たすプログラムファイルを作るというのを,プログラミングとみなすのです.しかしこれでは,これまでの私の演習で,最後の課題に全く手が出ないことになります.
私自身は,プログラミングを(エンジニアリング)デザインの一部どころかまさにそのものとみなしています.カタカナ語を一切使わずに言い換えてみると,演習科目や研究室活動における実装作業は,設計を必ず伴います.設計の後で実装というのではなく,設計と実装が不可分なのです.
しかし残念ながら,例えば今年度の後期の授業でスライドを作って学生に対して力説しても,この言明だけで分かってくれる学生は期待できず,また他の教員に対しても同意がとりにくいでしょう.先月,教員同士のミーティングで,設計という言葉を不用意に出した瞬間に,ある先生の教育観の開陳に話が飛んだことを,思い出します.
「プログラミングのしかたを確立すること」と定めた際の,もう一つの欠陥は,自分のプログラミングのしかたを学生に伝え,させてみて,本当に教育効果があるのかという不安,より正確には自問です.教育効果については,その科目内にとどまらず,研究室に配属されて,また社会に出ても有用であるのかどうかです.
そろそろブログだけでもがくのではなく,といっていきなり出版社に持ちかけるのが無理としても,数年の期間,参照してもらうような,設計と実装の方法論をPDFにでもとりまとめて,受講生に読んでもらうというアプローチを,考えたほうがいいのかもしれません.
関連: