9/21 : Search & Sort Algorithms クラスレポート

こんにちは、Yuiです。私は現在シアトルにある大学に行き、教育学と人間発達学を学んでいます。
大学での勉強を通して「子どもたちの認知力、独創力、および社会的スキルを促すためのこれからの”学び”の環境はどのようであるべきか」について考えることが私の学習のフォーカスとなっています。そんな中、SIJPのリーダーであるKenjiさんとお話をして、彼の活動に対する思いや考え方を聞いたとき、コンピューターサイエンスの知識は全くないけど活動に携わりたい!と思い、子供達の学びと成長を考える立場としてSIJPに参加しています。

今回は初めてイベントに参加した私の観点での「英語で学ぶCS(コンピューターサイエンス)」の活動報告をシェアしていこうと思います♪

9月21日土曜日、「Computer Science vol. 2 in English:Binary Search and Sort Algorithm」がベルビューカレッジで開催されました。日本では台風の影響があったため、今回は福岡と熊本との中継はキャンセルとなりましたがそんな中でも日本から約10人の子供たちがオンラインでイベントに参加してくれました。(ありがとう!)

当日は、一緒にイベントに参加する21人の子供がいました。中には親子で参加している人たちも見受けられました。当日のイベントでは、子どもたちは、自分のタブレットや、SIJPが貸し出しているラップトップを使いました。子供達はみんなとてもワクワクした様子でイベントが始まるのを待っていました。

 

その日の主なテーマは、アクティビティとゲームを通してバイナリーサーチとソートアルゴリズムが何であるかを理解、体感してもらおう、というものでした。

ソート

まず、「ソート」とは何かを学びました。ソートの主なコンセプトは、ルールに従って物事のグループを整理し並び替えをしていくことです。例の挙げるなら、携帯のアドレス帳やとコンピューターファイルです。
ソートを行う上でキーが重要となってきます。主に、数字(携帯番号、マイナンバー等)、文字列(名前、キーワード、AIによって認識された物の名前等)、アドレス(グーグルマップ等)などがあります。
並べ替えには2つの異なる方法、Ascending(昇順)とDescending(降順)があります。 Ascending が「小→大」、Descendingが 「大→小」となります。
コンピュータサイエンスでソートを使用する理由は、探しているアイテムを見つけやすくするためです。

ソートアルゴリズム

次に、ソートアルゴリズムについての説明がありました。

アルゴリズムは、タスクの実行方法を説明する一連のガイドラインです。
ソートアルゴリズムの種類はたくさんありますが、当日はバブルソートのみに注目しました。(よかった〜。笑)

バブルソートは、ソートの中で一番基本的なアルゴリズムです。大きなものが上に移動を繰り返す動作はバブル(泡)の浮き沈みを連想するので、このように呼ぶんだそうです。

この ビデオで は、トランプをとチップを使用したソートアルゴリズムとバブルソートアクティビティについて分かりやすく説明しています。

 

子供たちはこのアクティビティにとても積極的に参加し、楽しんでいました。説明を受けるだけだと少しイメージが湧かなかったり、理解へのプロセスに時間がかかってしまいがちですが、トランプとチップを使ったこのアクティビティはバブルソートのコンセプトを理解する上で非常にシンプルで楽しめる方法でした。
アクティビティの後、Kahootを使用して理解度を確認するクイズゲームも行われました。

Kahootががあるたびに子供たちのテンションが最高潮に。笑
このKahoot、子供たちにとってはクイズに答えて得点を競う楽しいゲームですが、私たちにとっては彼らが学んだ内容をどれだけ理解しているかを知ることのできる優れものです。
通常、新しいことを学んだ後にテストを受けるは気が重くなるし皆好きではありませんよね。テスト感覚になってしまうとせっかく楽しく学んだ事も台無しですが、Kahootを使うことによって皆ゲーム感覚で復習をしていました。

サーチアルゴリズム

休憩の後に、サーチアルゴルリム及びバイナリーサーチアルゴリズムを学びました。

リニアサーチ

リニアサーチは、一連の順番によって検索され、キーがリスト内で使用可能な場合は位置が前に戻ります。リニアサーチは、配列の先頭からスタートし、各項目で一致しているかを検証していきます。

<特徴>
アイテムが見つかるまで最初から順に検索しなければならない
ソートされていないカードに適しています

バイナリーサーチ

バイナリーサーチ(2分探索)は、必要な数字が見つかるまで、各ステップで検索空間の半分を削除することができます。これは、ソートされた物を非常に効率良く検索することができるアルゴリズムです。 例えるなら、1,000,000,000,000個の宝箱がある場合、特定の宝箱を見つけるために40個を開くだけで済むということです。リニアサーチだとデータのならびに規則性がない場合に、端から順番に探していかないといけないので検索にとても時間がかかってしまいますが、バイナリーサーチをすることにより、検索する範囲のインデックスの最大値、最小値を1/2ずつ狭めていくことができるので効率がいいということです。(動画での解説はこちらのビデオをごらんください。)

実際にたくさんのトランプカードを使って、バイナリーサーチをやってみました

<特徴>
検索スペースの中央から開始
検索スペースを半分に絞り続けることができ、中間値をサーチできる
ソートされたカードでのみ動作します
リニアサーチよりも効率がいいです

その後にSeeSawを使用した「BattleShip Game」というアクティビティも行いました。
参照:(https://classic.csunplugged.org/wp-content/uploads/2014/12/unplugged-06-searching_algorithms.pdf)

 

<ゲームの種類>
ゲーム0A、0A:練習用

ゲーム1A、1B:リニア/シーケンシャルサーチ用

ゲーム2A、2B:バイナリーサーチ

説明

<ゲームのステップ>

  • 二人組みを作りAとBに分かれる
  • それぞれに配布された紙にプリントされている船をランダムに選び、相手にその船に書かれた番号を伝える
  • じゃんけんを行い先攻後攻を決める(ここではAを先攻とする)
  • Aが最初に当てずっぽうで位置を予想し、その位置番号を言う
  • 予想が外れた場合、Bは「ミス」と言い、その位置番号に記されている番号を伝える
  • Aはその番号を同じ位置番号の船に記録する
  • これを繰り返し、相手の戦艦の位置を先に当てた方が勝ち

*ランダムな数字が振り分けられたバージョンと数字順にソートされたものが振り分けられたバージョンとを行う。予想の数が少なければ少ないほどいい。
この説明を読むと、ややこしく感じてしまいますが…実際にやってみるとこのゲームのアイデアがすっと入ってきます。このアクティビティを通して、バイナリーサーチがいかに効率よく、相手の選択した船を予想することができるかが理解できます。イベント中に私たちが実際にどのように使用したのか気になる方はぜひ Youtubeチャンネルをチェックしてみてください!

このイベントを終えて..


私は自分自身を「学びと子供たちにはかなりパッションがあるけど、プログラミングやコンピューターサイエンスの知識はない」と表現するのですが、このイベントで得た経験は目を見張るようなものでした。感想の一部をシェアまとめました。

  • 子供たちの吸収力は本当にすごい!こんなに早く新しいものを吸収することができるのは子供の特権ですね。
  • 「楽しい」は全ての人が学ぶに当たって重要なポイントであるため、KahootやSeesawなどのツールを使用し楽しい環境の中で学ぶことができるのはとても貴重である
  • 私はプログラミングを初めて学びましたが、イベントで使用するアクティビティはとても簡単に理解できて楽しかったので、私のようなCSに知識や免疫のない親子さんももっと参加してもらいたい
  • 子供たちがイベントで学んだことやしたことをお家に帰っても親と共有できることを願っています。親が子供たちの「アクティブリスナー」になり、一緒に楽しめることをができればベスト
  • また、両親も子供たちと一緒に参加できる時間がもっとあればいいなと感じた
  • イベントに参加し、CSを学ぶだけでなく、子供達同士や親子でのコミュニケーションの場となっていければいい
  • 今回プログラミングの基礎に触れたけど、子供たちが今後もっと深く学ぶことによって、プログラミングが彼らの可能性を広げる一つのツールであると感じでもらいたい
  • 課題としては、授業中に集中力がきれて、ゲームをしている子供がいたことです

また、ベルビューと福岡,熊本にいる子供達がこのイベントを通して繋がれることは本当に素敵なことだと感じます。日本の子供達にとって、英語で何かを学ぶ、といった機会も貴重なのではないでしょうか。日本の子供達やシアトルにいる子供達が新しいことにチャレンジする、視野を広げる大きな一歩になれるように今後も色んなアイデアも考えていければと感じました。このSIJPの働きを通して子供たちが今後も海を越えてお互いを励まし、影響を与えることができることを期待しています!

9月28日に行われたイベントの報告を近いうちにアップロードしますので、ご期待ください♪