プログラミングの授業を担当して早20年が過ぎました。

長いようで短いようで。
これまで教え方について色々と試行錯誤してきました。
でも、結局のところ、講義でデモしたり話したりして、コンピュータ演習室に移動して演習問題をやってもらう昔ながらのやり方で進めてきました。
講義では、ここまで丁寧に説明すればわかるだろうと思って話しているつもりですが、演習室で問題に取り組む学生をみるとできない。。。話し聞いてた?と思うこともありました。
でも、今思うと、肝心なことがわかってなかったように思います。
それは 学生がわかりやすいように丁寧に説明しているつもりでも、結局は、自分がわかっていることを自分がわかるように説明しているに過ぎない ということです。
また 学生は私の話を初めて聞くわけで、それまでやったこともないので話としてはわかるけど中身はわからない ということもあると思うのです。
問題の解説をしつつプログラムを作っていく手順を見せれば確実に前に進めることができだろうとは思っていました。
でも、問題を解く手順を全部説明してしまうと 学生から考える機会や失敗する機会を奪ってしまう とずーーーーーーっと思ってきました。
初めて学ぶことについていくのに精一杯の状況なのに応用問題をやる。。。というのは非常にストレスなんだということも気づいてきました。学生に聞いたわけではありません。私が観察して想像したことです。わかっていない人はわかっていないことがわからないわけですから。自分でも身に覚えがあります。
答えは、恐らく、一緒にやればいいんだよ
ただ、それだけ。
「こういうときにはこう考えるんだよね、なぜなら。。。」と言いながら一緒に自分の端末でもやるところを見せます。
できれば楽しそうにしているところを見せるのです。
授業では追いつくだけで精一杯で話を聞く余裕もないかも知れません。。。それでも終わってみれば課題は完成していて(トレースすることに意味があるという設定にする、事実そうだろうという気付きです) 「大変だったけどなんか達成感あるな〜」という感覚が得られることが重要なんじゃないか?という気付きです。
自分でできるようになって、いちいち聞かなくてもできるわと思えばしめたものです。
たぶん、これ↑であっているだろうな。。。と思うのです。どうでしょう?
なぜ、急にそんなことを思ったのでしょう?
自分自身の振り返りです。
たぶん、最近やっているAIの利用経験からじゃないかと思うのです。
自分でなんか書かなければならないと思ったときに、今ならとりあえずAIに下書きを書いてもらうことが多いです。
すると一から書く場合より心理的な障壁が圧倒的に下がるわけです。
先生はAIじゃないけど、課題の解説を聞きながら一緒にやれば、プログラミングを考えたり入力することは大変だけどプログラムを制作する過程を体験できます。大事かなと思います。
あと、学生が自分なりに試行錯誤する姿を長らく見てきました。
「おー頑張っているな〜」と最初は思っていました。
でも、その試行錯誤が変な場合が結構あるんですね。。。
プロから見ればその問題に対してそうは書かないというコードを書くのです。
自分で考えることはもちろん重要です。
ただ、プログラミングの場合は、問題に対応したコードはある程度の「形」があります。
これをまず身につけることが重要なんじゃないかと思うのです。
社会人になってプログラミングするときには必ず先人が開発したソースコードがあります。
それを手本として改造したり拡張したりして形を学んでいくってあると思うんです。
お手本をしっかり見せること、見るだけではなく自分でもやらせてみること、大事だな。。。と思うわけです。