プログラミング演習について考える

プログラムを書ける学生と書けない学生がいて、かなりはっきり分かれる、ということがいわれています。
見分けるためにはFizzBuzz問題を解かせてみれば良い、とか言います。企業の採用試験としてはそれでも良いのかもしれませんが、教員としては書けない学生を書けるようにするのが使命なのかなと思ってしまいます。

今期の2年生向けと3年生向けのプログラミング演習(の一部)を担当していまして、昨年度までのものを踏襲すれば良いかなと思っていたのですが、授業イメージトレーニングをしていると、やはり色々思うところがあります。

3年生向けのC++に関して言えば、C言語との違いとクラスの作り方を学んだところで、自分でクラスを設計してみるというのが必要ではないか、と思っています。その後に継承を学ぶ前に、一度クラスを設計して、何をPublicにして何をPrivateにするか、自分で考えてみるという経験があった方が、継承についての理解も深まるというもの。

設計したクラスが良いのか悪いのか、判断が難しいという問題はあります。ただ、良い悪いの観点として何があるのか、というのは知っておいた方が良いでしょう。できれば、評価軸も自分で考えるのが良いと思います。

この先エンジニアとして生きていくためには、評価というものを避けては通れません。自分が作ったプログラムが/技術が良いのか悪いのか、世の中にある技術/製品が良いのか悪いのか、自分の価値観で判断して、その判断結果を他人に伝えて、説得していく、、そういうことが出来るようになることで、自分のエンジニアとしての価値(評価)が上がっていくものだと思います。

クラスを設計する、お題は何が良いでしょうか。「オブ脳」の本だと「社員起立」となっていますが、むしろオブジェクト指向に対して嫌悪感情が生まれてしまう可能性があります。銀行口座ぐらいがちょうど良いかもしれません。もちろん、クラスをテストする方のプログラムも併せて作るようにします。テストファースト、です。


2年生向けは、C言語でのソートなのですが、これもあまりいたずらに難解な問題にするとプログラミングに対する苦手意識ができてしまう危険があり、あきらめてレポートをコピー/同級生に頼るしかない、という状況を作ってしまいます。

研究室の学生に聞いてみたところ、やはり例年プログラミング演習では出来る学生と出来ない学生の格差が大きく、出来る学生は暇にしていて、出来ない学生は全く出来ない、という状況らしいです。結構単位を落とす人も多くて、必修のため留年に直結するという危険もあります。

出来れば、すべての受講生に自分自身の成長を感じてもらえるようにして、最低ラインを全員が通過できるような、そんな授業が準備できれば良いのですが。難しいんでしょうかね?