電源プラグが抜かれている。周囲にビジネスマン風の小人たちがいる。

電子機器を使わずにコンピュータサイエンスを体験する教授法「コンピュータサイエンス アンプラグド」。その概要を紹介します。

最近、日本でも「コンピュータサイエンス アンプラグド(Computer Science Unplugged)」という手法が関心を集めつつあるようです。

「アンプラグド」とは、電源プラグが壁のタップに挿入されていない、つまりプラグされていない状態を指す言葉。つまり、この手法の名は、「コンピュータをはじめとする電子機器がアンプラグドなままで学べるコンピュータサイエンス」、といったような意味になります。

以下この手法を「CSアンプラグド」と呼称します。CSアンプラグドは、ニュージーランドの大学のコンピュータサイエンス学科で開発されました。その背景には、以下のような経緯があります:

  • コンピュータサイエンスは21世紀の基本的教養である
  • プログラミングはその入口と位置付けられている
  • しかし、Scratchなど教育用プログラミング言語が発展してきているとはいえ、それでもPCなど電子機器が必要で、マウスやキーボードに習熟していることが前提になっている
  • 特にマウスやキーボードに関しては、小学生レベルでの習熟度に大きな差があり、習熟度が低い子にとってはそれがプログラミング教育を受けるハードルにもなるし、プログラミングを楽しめずむしろ嫌いになる要因ともなりうる
  • そもそも電子機器上でプログラミングを行うことは、コンピュータサイエンスの入口として必須ではない
  • なので、電子機器を使わずに、コンピュータサイエンスの基本を遊びながら体験できるカリキュラムを開発し実験を繰り返したところ、好評であり効果的でもあった

というものです。

さて、日本語版も出版されて数年を経た今、じょじょに関心が高まっていると思われるCSアンプラグド。そこでカバーされている「コンピュータサイエンスの基本」というのはどのようなものなのか、以下で簡単に紹介したいと思います。

CSアンプラグドの参考情報:

日本での最近の動き:

CSアンプラグドの日本語版書籍:

「CSアンプラグド」の概要

上記の日本語版書籍でカバーしているトピックは以下です。全てのトピックが、小学生同士で遊びながらコンピュータサイエンスの基礎を体験できるように設計されています。

まずは「情報を表す素材」としてのデータに関するトピック。

  • 2進数
    • わたしたちが普段使っている数は「10進位取り記法」という書き方で書かれています。
    • このトピックでは「2進位取り記法」を紹介します。10進数の場合との関連性さえ理解すればとても簡単です。
    • さらに2進数の計算、メッセージ(情報)を2進数で表す方法、そして電子メールやFAXへの応用が解説されます。
  • 画像を2進数で表現する方法
    • PCやスマートフォンでわたしたちが扱うすべてのデータは2進数として表現されています。
    • なので写真ファイルや動画ファイル、音楽ファイルも全て2進数なのです。
    • この章では画像を2進数で表す方法を解説します。このような作業を「情報のエンコード(符号化)」とも言います。
  • データ圧縮
    • PCで作業することの多い人は「圧縮」や「ZIP」に慣れていることと思います。これらは全て「データ圧縮」の例です。
    • この章では、データ(2進数など)の中に現れる繰り返し部分を抜き出して、それを別の短い記号で表すことで、全体のデータ量を減らす方法を解説します。これが、実際に使われているデータ圧縮の基礎なのです。
  • 誤り検出と訂正
    • ネットワークを介してデータを送るときや機器内部でデータをやりとりするとき、宇宙から絶え間なく降り注ぐ宇宙線の影響などから、データの一部が誤って受信されることがあります。
    • なので、送りたいデータをそのまま送ると、ちゃんと届かないことが必ず起こります。
    • しかし、一見すると無駄な検算情報を付けてデータを送ることで、誤りを検出できたり、さらには訂正できたりします。
  • 情報理論の基礎
    • このトピックを簡単に紹介するのはちょっと難しいので、本ブログの記事「情報の測り方と2進数」を参考にしてください。2進数がなぜコンピュータサイエンスに適しているのかを体験するひとつの手法ともなります。2進数と情報理論はこのようにつながっているのですが、このトピックでは情報理論の基礎を遊びながら体験する方法が紹介されます。

つぎに「コンピュータを働かせるアルゴリズム」に関するトピックです。

  • 探索(search;サーチ)
    • たくさんのデータを保存できるコンピュータですが、保存した中から欲しいものを取り出せなくては意味がありません。ですので、「探索」は今も昔もコンピュータサイエンスにおける重要課題です。
    • ただ順繰りに探すよりも、もっと良い方法があることを体験できます。(ただし、データの保存方法がある特徴を満たしている必要があります。)
  • 整列(sorting;ソーティング)
    • データを保存する際に、ぐちゃぐちゃに保存すると後での探索が大変になることが多いです。なので、データを一定の順序で整列することはコンピュータサイエンスの重要課題です。
  • グラフ理論と離散数学
    • 離散数学でいう「グラフ」というのは点と線でできているもので、「グラフ理論」はいろいろなグラフの特徴やパターンを探る数学分野です。
    • グラフ理論は実に様々な問題に適用できるのですが、特にコンピュータサイエンスでは至るところで重宝します。いろんな場面で、問題をグラフ理論の問題として表現することができるからです。
    • この章では「最小全域木」というものを体験します。名前は難しいように思えますが、実際はとても簡単です。
  • ネットワーク経路
    • インターネットなどのネットワーク上でデータや荷物を送り届けるためのアルゴリズムを体験します。一見すると簡単なようでも、「デッドロック」が起こって荷物が詰まってしまうのを回避するのは案外難しいものです。特にクラウドコンピューティング時代の今では、全てのデータがネットワークを介して動いているようなものですから。

最後に「コンピュータに何をすべきか教える手続き」のトピックです。このトピックの名前はわかりづらいですね。アルゴリズムをどのように表現したら、コンピュータが動きやすいか、といったところです。

  • 有限状態オートマトン
    • カッコいい名前ですが、ごく単純な計算機械です。と言っても抽象機械なので、実際に作らなくても、紙と鉛筆などで動かすことができます。アルゴリズムの記述にも使われています。
    • 「宝探し」を題材にしたゲームで、有限状態オートマトンの働きを体験できます。
  • プログラミング言語
    • 単純な指示の組合せで複雑な動作を記述する、というプログラミングの特徴を体験します。

日本語版はここまでですが、原書ではさらに

  • 「解決困難な問題」
  • 「秘密を守り、犯罪と戦うための暗号学」
  • 「人間とコンピュータのやり取り」
  • 「人工知能は人間になりすませるか?(チューリングテスト)」

がカバーされています。日本語版で削除されたのはもったいないですね。

このように、コンピュータサイエンス学科の研究者によって開発されただけあって、コンピュータサイエンスのコアをきちんと押さえています。課題があるとすれば、個々のトピックを繋げた全体像を伝えるのが難しいことでしょうか。「だから何なの?」と受け止められてしまう可能性は否定できません。だからこそ、コンピュータサイエンスの全体像と合わせて伝えていく努力が必要になるのではないかと思います。

いずれにせよ、「CSアンプラグド」が、日本でコンピュータサイエンスが普及していくきっかけになることを願っています。

関連記事:

ホーム画面に戻るにはこのリンク

(かながわグローバルIT研究所 森岡剛)