何となく見えてきた文系学生のプログラミング事情

投稿日:2018年04月26日 |カテゴリー:Blog

みなさま、こんにちは。おくむら(@nori_broccoli)です。

4月から文系の大学でプログラミングを教えるという面白いチャレンジをしているところですが、ようやく少しずつ文系学生のプログラミング事情が見えてきたような気がしています。理系の学生でも苦手意識のある学生はたくさんいますが、やはりロジカルに筋道を立てて考える、というところでよく躓いているようですね。

ものすごく基本的なアルゴリズムとして、変数の入れ替え(Swap)があります。変数aの値を変数bの値と入れ替える、という処理ですね。当然ですが、a = bとしたあとにb = aとやっても、変数の値は入れ替わるどころか、この場合だとaもbもbの値になってしまいます。こうやれば入れ替えられるよね?という感じで答えを見せるのは簡単ですが、学生がどのぐらい考えられるのか、1時間ほど時間を取って確認してみました。

すぐにできた学生はほんの一握り、かなり時間をかけながらどうにか自力で答えに辿り着いた学生がこれも一握り、以前に別の科目でプログラミングをやったことがありその時の記憶を頼りにどうにか辿り着けた学生がこれも一握り、残りの7割方の学生さんはあの手この手を考えるのですがなかなかうまくいかない状況でした。途中で、変数がaとbだけでは入れ替えはできないよ、とヒントを出してまた少し回答に辿り着けていました。

工学系でプログラミングを教えていたときは、ヒントを出せばほとんどの学生ができていたため、この辺りが文理の差なのかもしれないなと感じたところです。ギリギリまで時間を引き延ばして、最後に模範解答を示したところ、ようやく理解できたといったところでした。

全く思いつかないというのも仕方のない話で、あまりロジカルに考えるトレーニングをしてきていないのかなという印象を受けました。おそらく今回の変数入れ替えにしても、自分で何とか考えて入れ替えられるように努力していた(思考のプロセスがあった)から、回答を聞いてすんなり理解できていたのだと感じました。考えさせる前に回答を伝えても、正しく理解ができなかったかも知れません。

もちろん、変数の入れ替えなんてプログラミングが得意な人間にとっては造作もないことですが、完全に初心者だとそもそもそういう発想がないのでできないということを改めて認識しています。学生たちは悲鳴を上げていましたが、しっかり考えさせるというプロセスはとても大事ですし、そのプロセスを飛ばすと、いくらプログラミング言語の仕様を理解したところで、まともに動くプログラムは作れません。

きっとこれからも時間がかかる授業になると思います。辛抱強く学生たちが自分で考えてプログラムを組めるように、どうにか頑張っていきたいですね。思考のプロセスを大事にしないとそもそもなぜそういう動きになるのかが全く理解できないので、プログラミング以前のところで諦めてしまうことにもなりかねません。せっかく縁あってプログラミングを教えることになったわけですし、脱落者なく、自分で考えてプログラミングできる学生を育てたいものです。