わさっきhb

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

Cをマスターしたら?

先週ここの日記で,プログラミング授業の最初に,なぜプログラミングをするのかを取り上げましたが,今度は,プログラミングを一つ「マスターした」水準になったら,その後どうするとよいかを,考えてみました.
当学科の履修課程のもとで,2年前期までの科目で「Cをマスターした」ときのnext stepですが,おおむね次の3つに分かれます.

  • 専門科目に関連する課題について,Cで書いてみる.
  • Cと異なる考え方のプログラミング言語を学ぶ.
  • 設計の技法について学び,プログラミングに取り入れる.

以下,順に詳細を.

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

もう一つ欲張るなら,

  • 一人または複数人で,大規模なコードを書く.

もできるといいのですが,本学でこのことを支援できる科目は,自主演習でしょうか.

*1:もちろんプログラミング言語の設計者は,その分野の研究者でない限り,言語を作るときにどこにあてはまるかを考えることはないでしょう.むしろたいていは,従来の言語ではうまく記述できないので,記述しやすく使いやすい(と自分なりに考える)言語を考案した,というのが実情でしょう.