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

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

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

【レポート】プログラミングで問題解決~ポストはなぜ赤いのか?~ 2/2 北区立桐ヶ丘郷小学校 2018.01.19

次は問題解決のお話です。

f:id:dig_learning:20180124000522p:plain

明治時代のポストに問題があることは分かりました。

では、どのように解決するか?

 

解決の手順としては、まず最初に原因を探ります。

これだけで何時間でも話せそうですが、原因の深掘りはテーマではないので軽めに。

そして、どのようにすれば原因を取り除けるかを考えます。

 

ここでは、素材を変えること、色を変えること、が問題解決の手段でした。

これから伝えるプログラミングというのも、同じように問題解決の手段になり得るものです、という形でプログラミングの話に移ります。

 

f:id:dig_learning:20180124001258p:plain

プログラムは命令の集まりです。

そのプログラムを実行するコンピュータは、いつも同じ結果を出します。

1+1を計算せよ、とコンピュータに命令すれば、必ず「2」と答えます。

プログラムのバグがない限りいつでも必ず同じ結果を出すことができます。

 

一方で、君たちはどうでしょうか?

先生や親から言われた命令に対して、いつも同じ結果を出すことができますか??

ここで苦笑しながら首を横にふる正直な子どもたち(笑)

 

何が違うのでしょう?

コンピュータにあって君たちにないものは何でしょう?

 

それは、アルゴリズムです。

f:id:dig_learning:20180124001634p:plain

このアルゴリズムを、littleBitsを使って実際に体験してみます。

f:id:dig_learning:20180124001809p:plain

littleBitsは本当に良い教材だなぁ、と今回あらためて実感しました。

アルゴリズムの学習をするのには、紙と鉛筆だけでも良いのですが、動きがないと結果を実感し難いので小学生には物足りません。

かといって、パソコンを使って実際のプログラミングをしながらでは覚えるべきことが多すぎてアルゴリズムだけにフォーカスして学習するのが難しくなってしまいます。

 

その点、littleBitsならアルゴリズムだけの学習に専念できますし、手を使って実際に動きを確かめながら理解を進められるので学習効果はとても高いと思います。

 

当日はアルゴリズムの基本である3つの構造について、littleBitsのモジュールを組み合わせながらプログラミングを体験してもらったのですが、初めての子どもたちにとっては適度に難しかったようです。

なかなか、モジュールを組み合わせる「順番」や「ルール」を意識することに辿り着きません。

 

工作であれば、電源に繋いでライトがつけばそれでOKなのかもしれません。

でも、「スイッチをONにしたら、まず白色のライトをつけて、次に赤色のライトをつける」アルゴリズムを作るのだから、決められた通りに動くように「順番」を決めなければいけません。

 

「スイッチをONにしたら、白色のライトと赤色のライトをずっとつけ続ける」アルゴリズムを作るのだから、白色のライトも赤色のライトもどちらも点きっぱなしになるように「ルール」を決めなければいけません。

 

ものすごく単純なことをやっているだけなのですが、言葉で示すことと、実際に手を動かすこと、そして結果を出すことの全て繋げるのは意外と難しいです。

やってみると7割くらいの子たちが不正解だったので、自力で解決できるように少しずつ個別にヒントを出しながら進めました。

すると、あちこちから

「あ、そういうことか!」「なるほど!」「できた!」

といった声があがります。

こうやって失敗→成功の体験を積み重ねることで、身体にアルゴリズムを染み込ませることができると良いですね。

アルゴリズムがあれば自分たちも確実に結果を出せるようになるのだから!

 

最後に、これまでに学んだアルゴリズムを使ってこんな問題を解いてみます。

f:id:dig_learning:20180124002803p:plain

あともう1コマ時間があれば、この先を一緒に考えたいところでしたが、残念ながら時間切れ。

解決サンプルを1つ紹介してこの日の授業は終わりとなりました。

 

終了後、子どもたちからは「またやりたい!」のリクエストをたくさんもらいました。

もちろん嬉しいのですが、何より、先生方がこの重要性に気づいて評価してくださることがそれ以上に嬉しいです。

 

あぁ、プログラミング学習っていうのは新しくて難しそうで自分には分からないと思っていたけど、それ私知ってるわ、という気付き。

 

子どもたちの問題なんだから、本当は子どもたちが自分で解決策を考えなきゃいけないのに、先生たちは忙しさを理由につい、答えを与えてしまう。
それでは考える力は育たない。
解決策を教えるのではなくアルゴリズムを教えてあげれば、自分で解決できるようなるのではないか?という気付き。

 

多様性というのは、答えは一つではないということ
だとすれば、3つめ、4つめの答えを自分の頭で考えられることが重要になる。
このときに、アルゴリズムをはじめとするプログラミングの考え方を知っていて
それを共通言語として使いこなすことができるとしたら、生産的な問題解決ができますね
という校長先生からのフィードバックはプログラミング学習をこれから取り入れていこうとする学校にとって、とても重要なポイントを含んでいると思います。

 

終了後、今回の学習を担任の先生がこんな形でまとめてくださいました。

「プログラミング」と聞くとすぐに「コンピュータ」という発想になりがちですが、そうではなく

『いろいろな学習場面や生活場面で問題点を見つけ、それを解決していくためにはどうしたらよいのか。

また、どんな順番でどんなルールをもって解決していくのが効率的かつ確実なのか。』

という思考過程であることを学びました。

探プロで伝えたいことを汲み取って見事にまとめて頂き、嬉しい限りです。

 

問題発見のところをもっと深掘りするのも面白そうですし、現代のポストを解決するところもやってみたいし、子どもたちが妙に関心をもっていた(笑)忘れ物を防ぐには?という問題にもチャレンジしてみたい。

今回の授業をきっかけに、さまざまな発展形を描くことができそうです。

頑張って機会を作りますね!

 

桐ヶ丘郷小学校の皆さま、ありがとうございました!

@tanpro-lab