memorandums

日々の生活で問題解決したこと、知ってよかったことなどを自分が思い出すために記録しています。

プログラミング授業終了の感想

うちの学科の情報エンジニアリングコースの学生を対象とした2年前期の授業を担当しています。以前は先輩先生と一緒に半分ずつやっていたのですが、退職準備ということで、2021年から一人で担当するようになりました。

一人で担当するようになり「はて」と思いました。実はこういう時間が一番好きだったりします。どうやって楽しませよう?取り組んでもらおうか?と考えるのが面白いですね。ITシステムの最初の企画を考えるときに似ています。こうやれば組織がうまく動く。。。人の動線や思考を考えながら色々な可能性を探りつつ少しずつハード・ソフトと形にしていくあれと授業プランを立てるのは似ています。

受講対象者が一応はソフトウェアエンジニア候補生なので、やはりプログラミングの練習機会を増やしてあげたいなと思いました。当時、AOJを使ったアルゴリズム本がいくつか出版されていましたので、それを底本として演習授業を組み立てて運営してきました。21,22,23と3年ですね。

その3年の間にAtCoderの隆盛は耳にしていました。ただ、競技プログラミングさせるほどの実力(とやる気)が学生にあるのか。。。疑問だったので手をこまねいていました。そこへゼミ生から就職活動時に企業側からランクを聞かれること、あるいはランク?以上を受験資格とするという話を耳にして、これはできるだけ早く準備させた方がいいなと思い、今年からAtCoderに切り替えた次第でした。ちなみに、企業側から指定があるのはAtCoderではなくPaizaのスキルレベルの方が多いのですが。。。問題が不出であるため授業で扱うのは難しそうと思いAtCoderを選択した次第です。

で、AtCoderの問題は難しいものが多いです。2年前期ではデータ構造とアルゴリズムを習い始める段階ですが、さらに難しい問題も扱う必要があります。そんな状態でどう取り組ませるか考えました。

1つの答えが、習うより慣れろ、でした。実際にアルゴリズムの流れは絵ではわかるでしょう。でも、その働きをするコードを提示されても、それがこうなるってのは理解するのが難しいです。1つ1つのパーツは理解できても全体としてこうなるという動きをイメージするのはまず難しいと思います。どうすればいいか?僕は繰り返し書くしかないと思うんですね。。。何度も考えては忘れたところを書き足したり修正したりしていくうちに何となく形として見えてくる、そういうことなんじゃないかなと思うんです。

なので、課題文を読んで、自分でアルゴルズムを考えるのではなく、答えのコードをみて理解し、そのコードを問題文をみて書けるようになるまで、とにかく繰り返し書く時間に授業時間を90分を当てる、もうこれしかないと思いました。数学の問題を読んでわからなかったら考える時間はもったいないから答えを先にみろ、というあのメソッドと同じです。暗記に何の意味があるんだ。。。という気もしましたが、でも、真似しているうちに形がわかってくる、そういうことってあるんだと思うんですね。門前の小僧なんとかです。。。どうでしょう?それを授業としてやらなければならない力を追い風として取り組んでもらおう、これいい仕掛けじゃないかな。。。と思ったわけです。はい。

前置きが長くなりました。

以上のように4月に急に考えて資料を作りながら自転車操業で前期の授業を進めてきました。やっと今日、15回目を迎えて終わったところでした。最後に確認テストを実施して皆さんのできを確認したところでした。

この方式も、そもそも受講生はどう感じるのか知りたかったので早い段階でアンケートを取っています。その結果は以下に書きました。

memorandums.hatenablog.com

これがプレ・アンケートですね。そして、これと同じテストを今日、ポスト・アンケートとして実施したわけです。その結果を以下、一部記します。縦軸は評価した割合です。

自習前提の授業スタイルはどう?という質問です。よいという反応しかなく、その割合が高まりました。

じゃ、プログラミングの自信はついたの?という質問をしてみました。自己効力感ですね。その他の問題をたくさん解いた、というわけではないので、そこまで自信がついたわけではない、ということなんですね。正直です。

プログラミングのやる気が増した?という質問もしてみました。これも微妙な結果ですね。。。自信に連動しているようですが。冷静だと思います。

来年以降もこのスタイルを続けた方がよいか?と聞いてみました。自分らには関係ないはずですけどね。。。優しい先輩達です。はい。

それぞれ回答理由も回答してもらいました。この他、各学生の試行回数もmoodle(のVPL)で採取しています。どれくらい試行錯誤した人がどういう感想を持ったのか?など相関も見れると思います。

以上の結果は、いずれどこかの学会か研究会で発表したいと思います。前期の授業が終わってからだな。。。データ整理して論文書いてですね。

企業からすると、大学で余計な癖をつけさせないでくれ、と思われるところがあることも承知しています。確かに、限定的な知識をもとに小さな小さな問題を解くわけで、その中で実務ではどう考えても書かないようなコードを書いてしまう(書かせてしまう)ような問題設定をしがちなところがあることも承知しています。

逆にもっとガリガリと訓練しすぎて嫌いにさせてしまうこともあるでしょう。それぞれの耐性や動機が異なるので、同じレベルの問題を大量に食べさせてどうだ!というのも教育としてどうかと思いますし。。。

その点、自習形式であれば、モチベのある子は自分で学びにいくでしょうし、そうでない子も単位のためにできる範囲で頑張るでしょう。自分で負荷調整する調整代があれば、できる子にとってもそうではな子にとっても文句(ストレス)は少なくなるはずです。

学習者自身が「あー俺、やらされている」って感じるのことが一番「悪」と思います。

会社員ももちろん状況によっては「やらされている」って思うこともあるでしょうけど「やらなきゃ」っていう思いの方が強いと思うんですね。。。ちょっと大変だけどやらなきゃと思って取り掛かってもらう、そのときに、課題と称して余計な作業をさせない(レポートを作成してコードと実行結果を出させるとか)を配慮しました。

コードを理解したり書けるようになることに時間を使ってもらい、その過程で自然と出てきた感想をただ書いてもらう、それを課題点としました。

甘い、ゆるい、色々な声が聞こえてきそうですが。

嫌いにさせない教育、そこをまず目指したいな。。。と思います。少なくとも2年の段階では。

ちなみに1年生の授業も今日、終わりました。以下の本でみんなでプログラムの意味を調べながら解読する作業をやってもらった授業でした。3つくらいアプリケーション作れるかなと思って準備したのですが結局1つだけでした。わずか6回の授業でしたのでしかたがないかな。。。と思っています。無理させても意味はありませんしね。

受講生の感想を聞きましたが、まあまあよい反応がありました。良かったなぁと思います。中国の大学を卒業して新入生として入学された学生さんが「中国の大学はこういうゼミ形式の授業がほとんどなくて(学生の数が多いから)、みんなで話し合いながら調べながら進める授業はとても新鮮だった」という感想を述べられていました。なるほどな。。。と。うちな小規模な学部なのでこういうのをウリにしているところもあります。せっかくコロナが終わって(そのコロナに今さら掛かっているやつ>私もいますが)、学生さんどうしが自由に会話できる環境に戻りました。みんなで談笑しながらプログラムを解析するとか面白いなぁ。。。と思いながら横で見ていました。手前味噌で気持ち悪いかもしれませんが、個人的にはうまくいった授業だったな。。。と思います。ぜひ、また来年のメンバーともやってみたいと思います。

今日も、とにかく勢いで書きました。久しぶりに出勤。楽しい一日でした。