先週ここの日記で,プログラミング授業の最初に,なぜプログラミングをするのかを取り上げましたが,今度は,プログラミングを一つ「マスターした」水準になったら,その後どうするとよいかを,考えてみました.
当学科の履修課程のもとで,2年前期までの科目で「Cをマスターした」ときのnext stepですが,おおむね次の3つに分かれます.
- 専門科目に関連する課題について,Cで書いてみる.
- Cと異なる考え方のプログラミング言語を学ぶ.
- 設計の技法について学び,プログラミングに取り入れる.
以下,順に詳細を.
- 私の担当科目としては,2年後期の情報ネットワーク演習はもちろん,3年前期の情報セキュリティのレポート課題でも,Cで書く課題を取り入れています(情報セキュリティでは,Javaで書く課題にしたこともあります).ビジュアル情報演習,実験・応用実験も,含まれると思います.
- 学科の授業として教えている言語には,アセンブリ言語(プログラミング基礎I),Java(情報処理III),SQL (データベース),MATLAB (アルゴリズム演習II),PrologとLisp (知識システム演習)が思い浮かびますが,他にも各授業で取り入れているものがあるかもしれません.広く浅く学んでから,「プログラミングパラダイム」という概念を通じて,プログラミング言語が体系化されることを理解する*1といいでしょう.
- 「設計(デザイン)」は,高度・大規模なプログラムを作るときの前提となります.プログラミングを離れ,日常生活においても,いきなり「行動する」のではなく,どう行動すればいいか,だれ(自分自身を含む)にどんな影響を及ぼすか,そもそもそんな行動をしていいのかを,行動する前に考えておくほうが,うまくいきやすいものです.コードを書く前に検討するのが,設計作業といえます.学科の授業の中では,オブジェクト指向設計と概念設計(データベース),UML (オブジェクト指向2)が参考になります.ここの日記で,プログラミング課題を「読み解く」流れを書きましたが,あれも設計作業です.これまで陽にはしてきませんでしたが,実はあの作業は,データベースの概念設計の方法を,Cの(比較的小規模な)プログラミングに適用したものです.
もう一つ欲張るなら,
- 一人または複数人で,大規模なコードを書く.
もできるといいのですが,本学でこのことを支援できる科目は,自主演習でしょうか.