プログラミングの課題分析に時間をかけよう
今年に入って、3年前私のプログラミング教室に入校した生徒が続々と卒業になってきました。3年間は、Scratchでプログラミングの基本を学び、HTMLでウェブサイトの構築を学び、Javascriptで本格的なプログラミング言語を学び、中級クラスの内容はすべて習得できるようになってきました。今年6月まで8人卒業しました。内6名は上級クラスに上がり、ウェブサービスの構築と携帯アプリの開発を学ぶことになっています。今月も3名卒業の見込みです。週1回3年間プログラミング勉強をやっている生徒は確実に技術を向上しました。
私の塾では3年計画✕2があります。基礎を固める3年間と活用実践する3年間のカリキュラムを組んでいます。最初の3年間は、コーディングの技術の上達はもちろん必要ですが、一番大事なのが、課題解決の方法をどうすれば見つけるかを学ぶことです。少しプログラミングを学ぶと、「もし〜なら」「繰り返す」などの基本命令は使えるようになります。しかし、その時点ではまだ本当の意味で使えるとは言えません。あくまでも講師が説明したロジックに合わせて使っただけです。自分の力で解決方法を思いつき、ここに「もし〜なら」などの命令を使わないといけないと自分で決めたものではありません。
私は授業で子どもたちにプログラムの書き方を教えながら、常に課題の分析を教えています。課題を分析して、解決方法(複数の場合もあります)を見つけて、あらゆる可能性を予測し、それからコードを書きます。はじめてプログラミングを学ぶ子どもの多くは課題を渡すといきなりプログラムを書こうとします。いろんな命令を出して試します。それもいいことですが、ほとんどの場合はどこかでつまづくことになります。その時、課題分析を教えます。教えると言っても子どもと話し合って解決方法を気づいてもらいます。私の塾では、Scratchは1年間しかやらないので、Scratchが終わった時点ではまだ課題分析の力が弱いですが、課題分析とコーディングを繰り返し、3年目に入るとほとんどの生徒が課題に対して自分の解決方法を少なくとも1つ見つけるようになります。これは非常に嬉しいことです。
文部省のプログラミング教育の位置付けからみれば、小中学校では継続的に本格的にプログラミングを学ぶのがなかなか難しいですが、このプログラミング課題分析は多くの教科に取り入れることが可能だと思います。1つの課題に複数の解があります。一人ひとりの生徒に発想力、想像力を働いてもらって、できるだけ多くの解決方法を見つけ出し、プログラミングでそれらの解決方法をすべて実践できればおもしろいではないかと思います。
ここで1つの例をあげます。例えば、Scratchを学んでいる生徒にこのような課題があります。「10秒タイマーを作って10秒を超えたら音を鳴らしてください。」という題です。Scratchだとタイマーの命令がありますので、簡単に作れます。作る方法はいくつかありますが、私の塾では「もしタイマー = 10なら、音を鳴らす」というふうに作る生徒がたくさんいます。考え方は間違っていないですが、実際に実行するとどうやらうまく動かないです。どこに問題があるかを生徒と話し合って分析します。実はこの課題を作成するとき、私はわざと「超える」という言葉を使いました。分析するときは、生徒に「10秒を超える」という言葉を説明してもらいます。つぎ「10秒を超えたら」と「10秒になったら」の意味の違いを説明してもらいます。この課題は、生徒に問題をよく読んで、課題の中の言葉を正しく理解しなければなりないことを教えます。問題を適当に読む子どもが多いので、正しく読むことの大切さを教えています。ある意味で国語の勉強です。「10秒を超えたら」と「10秒になったら」は全く意味が違います。言葉の意味の違いによってプログラムが変わります。もちろん実行結果も変わります。このように小さな学習ポイントを決めて、複数解の問題を作って、それをプログラミングの形で実施できれば、教科への取り込みも少しできるではないかと思います。
プログラミングは確かに楽しいです。学校でのプログラミング教育は、児童や生徒に学んでもらいたい小さな目標を決めて、日々の実践が大事です。
0コメント