探究型プログラミング学習(探プロ)

プログラミングの考え方を学んで、未来を創る力を手に入れる

プログラミングの考え方を学んで未来を創る力を手に入れる

【ワークショップレポート】未来の街を旅しよう!その6

さて、ここまで5回にわたり

旅をテーマに、LEGOとlittleBitsを使って、

・命令(LEGO+littleBits)の集まりがプログラム(街)

・プログラムを順次実行するのがアルゴリズム(目的地までの行程)

という考え方を具体的にどう実現したのか?

について書きました。

 

次は学習フレームワークの最後のステップである「実現する(コーディング)」です。

f:id:dig_learning:20170301164031p:plain

 

ちなみにコーディングという名前は、実行させる命令をコード(Code)という形で作ることを意味します。

コードは、コンピュータが理解できる言葉です。

こんなやつですね。

プログラムコード - Google 検索

 

なので、コンピュータ上で実行するコード(≒プログラム=命令の集まり)を作る行為のことを、私はコーディングと呼んでいますが、世の中一般的には、プログラミングと呼ぶようです。

 

私の理解では、プログラミングはもう少し範囲が広くて、

少なくとも探プロの定義では 、アルゴリズム通りに動くプログラムを作ること

なので、実行させる対象は必ずしもコンピュータでなくても良いと思っています。

 

探プロが、いわゆるプログラミングっぽくないのはこの捉え方が違うから

なのですが、まだうまく伝えられていないような気がしています...

 

プログラミングという言葉を使わない方が良いのでは??

というアドバイスもよくもらいます。

 

それくらい、プログラミングという言葉が、少なくとも日本では限りなくコーディングに近いものとして使われていますから。

日本のプログラミング教育がいまひとつ私にとって魅力的に思えないのは、根本的にはこの定義がズレているから、と思っています。

 

ですが、この辺の定義には諸説ありますし、好みもあったりするので、これ以上深入りするのはやめておきます。

 

 

何にしても探プロでは

アルゴリズムに従って命令を実行するプログラムを作ることをプログラミング

と定義しました。

なので、実行するところに限定して、コーディング、という言葉をあてています。

 

そして、探プロでいうところのコーディングが何か?

今回の例でいえば、littleBitsを使って動かすことがコーディング、となります。

f:id:dig_learning:20170302232640j:plain

 

作品をつなげるアルゴリズムをストーリーとして語りながら

Aの作品ではAの命令を実行(littleBitsを動かす)

次にBの作品でBの命令を実行(littleBitsを動かす)

という感じです。 

 

レポートその3の中では、今回のチャレンジを4つ書きました。

  1. いつもの紙工作ではなくLEGOを使うことで創造力をさらに高められるか?
  2. 発散系の創造的思考と収束系の論理的思考を同時に使いこなせるか?
  3. プログラミングの考え方(今回はアルゴリズム)を学び、理解した上で使いこなせるか?
  4. ファシリテーターの説明だけで子どもたちは理解できるか?(TAはどの程度の介在が必要か?

 

そのうちの3つめ

プログラミングの考え方(今回はアルゴリズム)を学び、理解した上で使いこなせるか?

について振り返ります。

 

今回は順次構造という非常にシンプルな形のアルゴリズムだったので、結論としてどのグループも、ちゃんと旅のストーリーを作って、かつlittleBitsのくっついたLEGOを命令と見立ててプログラミングすることができていました。

f:id:dig_learning:20170301165134p:plain

 

ここでも、TAの皆さんのフォローに大変助けられたのですが、終わってからのフィードバックには

街、旅、という複数の概念が混在する中で、子どもたちが何を作ったらいいのか分からず混乱する場面があった

というものがありました。

 

確かに、いま振り替えると「街」という概念はあまり重要ではなかったかもしれません。

 

また、子どもたちの考える旅の発想はもっと自由で、街にこだわる必要はなさそうでした。

3グループの発表をきいた感じだと、ロールプレイングゲームを作っているような、そんなイメージで捉えていたようです。

飛行機に乗って移動したり、最新型のロボットに乗っていたところもありましたしね(笑)

 

そんな反省を活かして、次回は旅というコンセプトは残しつつ、子どもたちに伝えるときはクエスト(Quest)という言葉を使うのもありかなとか。

もうちょっと考えてみます。

 

そして、もっと複雑なアルゴリズムを作った場合には、ストーリーを聞いているだけでは分かりづらいので、何らかの形で可視化する工夫も必要です。

この辺までやると、学校でのプログラミング教育としても活用できるのではないかなぁ、と思っていますがどうでしょう?

 

 

さてさて、各グループはどんなプログラミングをしたのでしょうか?

次はようやく、発表です!

@tanpro-lab