プログラミングを教える現場でも,なかなか理想は遠い。その1
私が北九州市立大学で取り組んでいるプログラミング教育と卒業研究指導では,倉貫さんと近い問題意識で学生指導に当たっています。そのやり方は毎年のようにバージョンアップしているのですが,なかなか理想は遠いなと実感しています。
毎年取っているアンケートによると,現時点では北九州市立大学 国際環境工学部 情報メディア工学科に入学する新入生70名程度のほぼすべては,入学までにプログラミング教育を受けたり自分でプログラミングしたりした経験がないと回答しています。
今のところの授業の成果としては,入学でほぼ未経験から始まって3年間の学習を経た学生全員が,簡単なスマホアプリや Arduino を使ったロボットの開発ができる程度には育てることができています。おかげさまで年々少しずつレベルアップしている状態で,意欲的な学生の中には研究室配属前に九州アプリチャレンジキャラバンというプログラミングコンテストに応募して,さらに賞を獲得する学生まで現れています。
私の研究室「ザキ研」に入門するとさらに腕を磨きます。研究室の学生が九州アプリチャレンジキャラバンで賞を獲得するのは三年連続で達成しています。就職状況は良好で,先方の企業からお褒めいただくこともしばしばです。
このような学生を現場でどのように指導しているのでしょうか。本記事では,従来の指導法の課題を指摘し,次に現在の私たちの指導法の概要を示します。最後に,さらなる終わりなきチャレンジについて語ろうと思います。
まず従来のよくあるプログラミング演習の授業では,次のように進めます。
- クラス全体で同じタイミングで一斉に指導する
- プロジェクター等で毎回の授業内容を一斉に講義し,学生たちはそれを聞いてパソコンに向かって一斉にプログラミング演習を始める
- 教師やTAが巡回して学生たちをフォローアップしていく
- 授業の最後もしくは次の授業回までに同じ課題を終えて提出する
このような指導で考慮されていない最大の問題は,次のような理由により学生のプログラミング能力の個人差がきわめて大きい点です。
- 高校以前のプログラミング経験が全くない学生から日々プログラミングしている学生まで多様である
- 入試で入学時にプログラミング能力について成績評価をしていない
- 純粋な未経験者の中でも,プログラミング習得が早い学生と遅い学生がいる
従来の一斉指導するスタイルでは授業のペースをクラス全員で揃える必要があり,このような個人差に対応できません。すなわち,学習ペースが遅い学生にペースを合わせれば学習ペースが早い学生が退屈しますし,学習ペースが早い学生にペースを合わせると学習ペースが遅い学生がついていけません。
次の問題点として,教師やTAのプログラミングの経験が浅く能力が低いと,効果的な指導ができない点があります。とくにTAが能力不足だと思ったように教育成果を上げることができません。
このような問題点を解決するために,次の2点を主軸にプログラミングの授業を整備してきました。
- 学生がそれぞれ自分のペースで学習できるようにする
- あらかじめTAをプロのエンジニアに近いプログラミングスキルを持つまでに徹底的に鍛える
つづく。