バックアップ中

そういえばここ1年ほど自宅のNASのバックアップをとっていなかった(!)ので、空いているHDDを玄箱にUSB接続してrsyncでバックアップしています。

あとは研究室のもバックアップしなければならないのですが、両者の同期をとるのが大変な作業です。現実逃避用の仕事として残しておこう。

結果

予選2試合、決勝1試合をやって1勝2敗で終わりました。予選では7チーム中5位、決勝では初戦敗退ですが得失点差でだいたい5位くらいだと思います。

予期していたとはいえ、悪い結果となってしまいました。他のチームの伸びについていっていない気がします。そろそろ抜本的な改良を行わないと次のジャパンオープンでは最下位になる可能性もあるでしょう。

いくつかの改良点は考えられるのですが、現在の状態遷移図とどう結びつけていくかが問題です。

PENの事例

PENを使ってアルゴリズムの教育を行った事例です。こちらもあまり聞いていなかったのですが、「変数値のswapを教えるのに困難があった」話題から聞き始めました。

感想:

代入の概念は初学者にとって簡単ではないのにあっさり済ませることに問題があるのではないかと思います。計算のモデルを代入でなく置き換えにしたらという意見もありましたが、それなら代入を使う言語を選ばなければいいのではと思いました。

全体を通じて思ったのは、「情報教育とは何か?」「プログラミング教育の意義は何か?」「プログラミング(教育)の核心は何か?」という問題をあいまいにしたまま(あるいは共通理解の確認もないまま)でいるために、言語設計者の趣味あるいは偏見によって議論が左右させられたり問題が移し替えられてしまって、結局現場で教える先生が混乱されている印象を強く受けました。(きっとこれらの議論はもっと高位で行われていると思いますが)

慶応大学の先生もコメントされていましたが、中学、高校の先生は不完全な教科書でもかなり上手に授業を行われていると思います。育てる側の大学や教科書を作る研究者側に大きな問題があるのではないか?というのも同感です。

JavaやCを教えるのが本筋だとか、オラが言語がスンバラシから使えとかいったことは別でやってもらって、特定の言語や実装を抽象化して、プログラミングにどんな要素があって何を学ぶのが重要なのかをはっきりさせたほうがずっと勉強になるし議論のベースになるのではないかと感じた1日でした。

懇親会で高田先生のお話を伺えたりCSKの森さんにお会いできたのが収穫でした。

あ~、奥村先生のサインをもらうのを忘れた。

PEN

開発の話はほとんど聞いていません。伝統的な言語をシンタクスシュガーで覆ったようなものに見えます。ほとんど聞いていないので外れているかもしれませんが。

高校での事例(保福先生)

神奈川県の高校での事例発表。

神奈川でも情報Aの割合が多く、次いでC、Bは非常に少ない。情報Bは指導しにくいとの評価もある。unpluggedの内容を情報A,B,Cで分けてみると、情報Bをかなり網羅している。情報Bを教えるのに役立つのではないか?

1クラス33人に対して、探索問題、並べ替え問題、並列処理の授業を行った。ただし、あまり時間はかけられなかった。

探索問題では、線形探索、二分探索、ハッシュ法について。unpluggedの実習を行い、特徴や長所、短所などをまとめさせた。ふだんおとなしい生徒たちが活発に議論する様子にびっくりした。

並べ替え問題では、天秤が用意できずにカードを使った。トランプは生徒が置いた場所を覚えてしまうのでよくない。微妙に大きさの違う文字を印刷したカードを使うことでそういった問題を避けた。

授業後にアンケートをとったら、100%が良いという反応で、面白い>理解しやすい>良い、という順序であった。

脳が活性化した、頭使った、印象的、楽しい、共同作業などのキーワードが多かった。

苦手意識の解消に役立つのではないか?

質問、コメント:

・中学校でやるより小学校でやった方がいいのでは?

・なぜ選択ソートとクイックソートなのか?

・現実世界とのつながりはどう考えているのか?アルゴリズムだけ教えてその先は?

・体験後に知識として定着化するアイデアは何かあるのか?(私の質問)

・次にプログラミング言語を教える必要はないのでは?

感想:

こちらも生徒との信頼関係がある中で効果的な授業を行っているように見えます。中学校の事例と違ってアルゴリズムの中に一歩踏み込んでいった印象を受けました。

私の質問の意図としては、両者とも遊び/楽しい要素を強調されていたので、単なるイベントとしてしか記憶に残らないのではないかと危惧したからです。ちゃんと知識、技術として定着する要素があればいいなと思います。多めのデータを与えて解かせる課題を設定したり、自分で問題を作らせるのも良いかもしれません。

この発表からは脱線しますが、unpluggedをプログラミング言語/プログラムに直接結びつけるのは困難かもしれません。慎重に言語を選ばないと手続き型言語の枠組みだけでは本質を見失う可能性もあります。このあたりを理解しないで指導すると結局理解を混乱させて本末転倒になるのではないかと思いました。

技術家庭科、中学3年生の授業(井戸坂先生)

unpluggedの12章すべてを授業で行った。

・画像表現では、画像をFAXのように数値的に表現して相手に伝える。

・データ圧縮では、繰り返し出てくる文字や単語を矢印で置き換える。置き換えた図から元の文章を復元する。

・エラー訂正では、(表が白、裏が黒)磁石式のカードを5×5のマトリクス状に貼り付けさせ、先生がそれを6×6になるようにカードを追加する。後ろを向いている間に1枚だけ裏返しにさせ、先生がそれを当てるというもの。後から追加したカードはパリティである。生徒は2枚裏返していて焦った。エラー訂正に関連してISBNのチェックディジットを説明。

・2進数では、1、2、4、8、16個の点を描いた5枚のカードを順に並べ、点を数えることで10進数との対応を学ぶ。

・最小全域木では、泥市を最小のコストで舗装して各家庭を結ぶ例。

・並べ替えでは、砂の入ったフィルムケースと天秤で重さの順に並び替える。

などなど。

unpluggedは学習の中に学びの要素がある。

作業型か体験型のどちらかで、グループで行える内容が多い。

生徒はコンピュータを使うよりもunpluggedの方がいいとの反応が多かった。

感想:

短期間によくここまで授業をこなせたと思いました。写真で見る生徒の表情などかなり真剣かつ楽しそうでした。自分も経験がありますが、こういった授業をやるには多分に教師のセンスが必要です。井戸坂先生はかなりの経験の持ち主と見えました。

ワークショップ「情報科学を教室に」

今年は3つのワークショップに分かれており、ロボット関係のものとどちらに参加するか迷ったのですが奥村先生の話を伺いたかったのでこちらを選びました。以下は奥村先生の問題提起のいいかげんなメモ。

アランケイの「ポップカルチャーは危険な文化」の話。考えることが重要なのに、googleコピー→powerpointペーストは、教育どころか人間をダメにしている。コンピューターがなかった頃のほうがずっとマシ。

Edward Tufteの「Cognitive Style of PowerPoint」の話。PowerPointを使っていると頭もそのような構造になってしまう。(箇条書き、関連のないものの羅列、話のつじつまを適当にあわせる、何となく納得させるなど)

ファインマンの話。space shuttleが落ちた後の調査委員会のメンバーになった。会議で驚いたのはbulletがたくさんあったこと。(bullet=箇条書きの・)議論になっておらず重要なことが話し合われていない。結局space shuttleはまた落ちた。

上記から、現在の情報教育は生徒の思考力を奪ってないか?(日経コンピュータの「実態は町のパソコン教室以下」を紹介)

http://itpro.nikkeibp.co.jp/free/NC/TOKU2/20050329/1/

データ圧縮の話。情報の教科書ではデータ圧縮を「情報を減らすこと」と表現されている。これは完璧なウソ。「QRコードをフルカラー(1600万色)にしたら1Gバイト格納できる」技術にベンチャーキャピタルが資金提供しそうになった。ちゃんと情報科学を教えないと!!

unpluggedの話。BellのManaging Gigabyteという1994年の本にあった一枚のさし絵。

Tim Bellは子どものための教科書も作っている。コンピューターを使わない(unplugged=電源オフ)でコンピューターを教える本「Computer Science Unplugged」

このワークショップでは、この本を使った2つの実践例と、大学入試センター試験の記述用言語DNCLの実装PENについて発表を行う。

基調講演(久野先生)

この会の目的としては、プログラミングがどう教育に役立つか、実際の授業はどうなっているかを知ること。

情報処理学会の簡単な歴史と教育に関わる活動の紹介、情報科目の試作教科書の案内。(サンプルが回覧された)

コンピューターシステムやソフトウェアに関係する事件を取り上げられた。

・構造計算書の偽造は、改ざんできる出力データを原本にしたのが問題。入力データを添えればいいではないか。

・1円61万株誤発注問題、フィギュアスケート採点ミス事件は、人間のミスを想定せずにシステム設計したのが問題。

→これらの事件は、情報システムに関するきちんとした理解がないから生じているのではないか?システム発注側にセンスある人材がいないために、とんでもないシステムができあがっている。

→→初等中等教育からプログラミングを重視した教育をするべき。ただし、「プログラミング」という言葉は抵抗があるようなので(excelのマクロなどを含む概念である)「手順的な自動処理」と表現している。

試作教科書では現行の情報A,B,Cをふまえて、情報I,IIの形で再構成している。特にプロジェクト管理の導入やプログラミングの具体的な体験を可能とするような内容にしている。

しかし、プログラミングを教えることにはかつてのBASIC教育を彷彿とさせ抵抗が大きい。「国民全体がプログラマになる必要がない」「プログラマにならないならプログラミングを学ぶ必要がない」といった誤解、曲解が横行している。(理科の「でんぷんのヨード反応」実験は、生徒を全員化学者にするためのものではないことと同じ)

プログラミング教育が必要な根拠としては、

・プログラミングはコンピューターの原理や構造を理解するのに必要不可欠であり、それを体験することで効果的に得られる。

・初等中等教育でプログラミングを学ぶのは世界的な常識で日本はひどく立ち後れている。国際会議でも海外の教育者に心配されてしまう。

・国民全体の情報水準を引き上げるためにもプログラミングは必要。

あとは昨年度のワークショップの内容紹介と、教育用言語ドリトルの設計についての解説があった。

会場からの質問、コメントとしては、

・初等幾何学を学べばプログラミングなんて理解できる。そっちをやったらいいじゃないか。という反論にどう答えるのか?

・人間の情報処理とコンピューターの情報処理は違う。なぜその点をふまえた内容にしないのか?

・ワードやエクセルを使うことと、プログラミングを体験することの本質的な違いはあるのか?

・試作教科書では基礎的な知識の詳細(例えば2進数)が欠けていて大学入試の試験問題が作れない。

会場に韓国の大学生が来ていたので韓国の状況が話された。

・かつては小中学校でBASICが教えられていた。最近はあまりやってない。やっているところはVisual Basicになった。

基調講演の感想としては、プログラミングを一つの「能力」のようにみなしていることに違和感を覚えたことと、プログラミングの教育とプログラミング言語の教育を同一視、あるいは不可分な関係と見ているような感じを受けたことでしょうか。

全体の共通理解の土台を築く目的で始められた基調講演でしたが、情報教育とプログラミングの関係がいまいちわからなくなったような気がしました。これは昨年も受けた印象ではありますが。