Category Archives: 講義

講義でのペアプログラミングの使いどころ

今年度のJavaの講義では、ペアプログラミングを導入して、演習に取り組む時間を比較的多く取ってみました。そして、必須課題として、その感想を聞きましたが、総合的に良かったあるいはどちらでもないというのが33%、残りの67%は「よくなかった」という感想でした。理由は知らない相手や、理解度の違う相手との演習は思った以上に神経を使うということで、それほど効果的ではないという感想でした。全員に利点とデメリットも書かせましたが、ほぼ、同じような答えで、よくなかったと感じた人たちも利点がある点は理解しています。なんかうっとおしからいやだ…ということではなく、きちんと理由を考えさせた上で、総合評価させています。

1つあるのは、友達関係にない相手と組ませることになるのは、確かに大変かもしれません。とは言え、講義運用上どうしてもそれは必要になります。レベルが違う人と組むのは、それなりに悪い事ではないと思うのですが、「課題を行う」というまじめな学生達のゴールにとっては足かせと感じたのかもしれません。ただ、他人がどう考えるのかということが理解できる点は良かった点として挙げられていました。

今年度は比較的多くペアプロをやりましたが、来年度は、限定的にやろうかと思っています。アジャイルのプラクティスは、形のないソフトウエアを作るプロセスを進化させるいちばん有力な手法だと感じています。ただ、プログラミングの初心者でできそうなプラクティスはペアプロではないかというのが当初の考えです。しかしながら、まずは基礎力をつけてレベルを比較的揃えてからやるというのが重要なようです。また、講義全体の進行度合いとはある程度独立した課題を与えるひつ模様もあると感じました。つまり、講義の流れは追えている学生もいれば、遅れている学生もいるということで、そこで一様でなくなる可能性があるということです。来年度は、「ペアプロの日」つまり、ペアプロで課題だけをやる日を1回か2回確保しようと思っています。

ようするにペアプロが機能する状況を、講師が作った上で、させないといけないという当たり前の結論なのですが、現場の開発と教育の現場の違いはまさにそういうところではないかと感じました。

プログラミング講義の演習でペアプログラミング

けっこう長い年月、大学で文系の学生を中心に初心者向けのプログラミングの講義とExcelを中心としたアプリケーション利用の講義を受け持っている。プログラミングの方は以前は自分の書籍、そして改訂が追いつかなくなってからはその内容を書き換えて作ったテキストで教えている。ずっとJavaを教えているがJava言語を教えるのは学校の方針なので変えられない。ほとんどの学生は、おそらくエンジニアにならないと思うし、ここまでにプログラミングについての何かの講義を受けたことは前提にしていない。プログラマ養成という目的はなく、「世の中にはこういう世界もあるものだ」と思ってくれればいいくらいの講義であり、以前は受講者はすごく少なかった。もう1つ講義を持っていて、そちらはExcelを中心にしているが、数年前まではExcelの講義の方はまだ受講者は多かった。しかし、なぜかちょっとその傾向が変わっている。比較的まじめにJavaの勉強をする学生が増えて来た。情報処理試験を受ける人がその学部でも多いということを別の先生からも聞くが、もしかしたらスマホブームみたいなこともあるのかもしれない。

毎年同じように淡々とやってきたのだが、数年前にExcelの講義よりもJavaの講義を最後まで受ける人の方が多くなってきて、ちょっとやり方を変えるべきかと思うようになってきた。少しレベルを上げて、繰り返し基本をやるのをやめたりとかしてきたが、今年から「ペアプログラミング」を演習に取り入れるようにしようとした。講義は半分は解説しながらプログラムを打ち込んだりして、残りの半分は演習に充てている。去年までは基本的に1人ずつでやっていた演習を今年はペアプログラミングにしようとした。しかし、いきなり最初から人と組むのはどうかと思い当初は1人での演習とした。つまり、ベースになる知識がいくらかでも浸透しないと会話が成り立たないと考えたのである。今日は4回目の講義で、今回の演習でペアプログラミングやってみたのだが、結論を言うと正解だった。学生の表情がきわめて明るく、また、相談しながら何かをやることでの達成感があるのか、「できたー」と声を出す学生は1人や2人ではなかった。記録のため、その状況をブログに残すことにする。

  • 先週までで基本型を説明した。今日は文字列についての章で、+、length、substring、そしてStringBufferのinsert、appendくらいしか教えてない。それらでできるプログラミングとしては基本的なレベルの演習を与えた。
  • ペアプログラミングという言葉を使ったが、アジャイルとは何かみたいな話は一切していない。説明したのは「1台のパソコンを代わる代わる使って演習をやりなさい」という程度、また、適当に打ち込む側を代わることと、横から見ている人は「言葉で茶々を入れる」ということを強調した。問題ごとに代わるペアもあったが、「随時必要に応じて代わる」点を強調しておいたので、主体的に関わる側に随時切り替わるペアもあった。
  • チームをどう作るか迷ったが、講義は学科や学年をまたぐものであって、あまり同一学科の同一学年が集まっておらず、学生同志はほとんど面識のない様子だったので、単純に座席の近い者でペアを組ませた。人数が奇数だったのだが、1名のみTAが茶々入れ役をした。
  • ほぼ全員が、明るい表情で演習を続け、また、お互いに話をすることで、講義にありがちな重苦しい雰囲気は一気に吹っ飛んだ。通常の演習よりもリラックスができたのだと思われる。また、演習問題が出来上がった事は声や表情等に出るのだが、一人でやるよりも達成感があったのではないかと想像できる。また、問題の解釈をディスカッションしたり、うまく行かないポイントを会話するのを聞く事で、どういうところを迷っているのかもある程度は観察できる状態だった。
  • 問題に関する質問がほぼなかった。通常は演習中に、TAが走り回ってサポートしているが、サポートの必要がなかった。つまり、2人で演習にかかれば疑問点は解決できるということのようだ。
  • 終わってから作ったプロジェクトを作業していないPCでログインしている人に渡すように指導をしたが、そこで悩むことの方が多かった。この点についてはあまり指導しないでおいたので、仕方ない面はある。たぶん、次回からUSBメモリが必要だと気付く人もいただろう。また、下手なことをするよりもプログラムをメールで送り合った方が楽という点も気付くペアはいた。いずれにしても、ここは随時指導を加えるポイントである。

そういうわけで、ペアプログラミングってどうだろうかと慎重にスタートしてみたが、たぶん、これは学生も教師もやりやすい手法のようだ。特に、学生同志で、それぞれ上下関係が薄いという場合には問題なくワークしそうだ。学年の違いもまあ、あの年齢になるとそんなに気にならないのだろうか。ペアを今後どのように作るかちょっと悩ましいところもあるが、固定化しないでやるのがいいのか、あるいは固定化させるべきか考えないといけない。だが、いずれにしても、ペアプログラミングによる演習は積極的に取り入れて良さそうだ。