見出し画像

【学習指導要領を読み解く】高校におけるプログラミング教育とは?〜後半~

令和3年度から高校でもプログラミング教育がスタートします。「一体何を教えればいいんだ?」と不安になっている先生も多いでしょう。学習指導要領を読みながら、何をどう教えてどのような力を身に着けさせれば良いのか見ていきましょう。
前半の続きです。

身に着けさせる力とは?

前半で述べた通り、学習指導要領では
①アルゴリズムによって処理の結果や効率に違いが出る
②アルゴリズムを正確に記述することの重要性
③プログラミングの意義や可能性
この3点について気付かせるのが目的です。

ではこれらに気付かせるために、どのような力を身に着けさせる必要があるのでしょうか。

《『思考力,判断力,表現力等』の取扱い》
イ(イ)目的に応じたアルゴリズムを考え適切な方法で表現し,プログラミングによりコンピュータや情報通信ネットワークを活用するとともに,その過程を評価し改善することでは,コンピュータを効率よく活用するために,アルゴリズムを表現する方法を選択し正しく表現する力,アルゴリズムの効率を考える力,プログラムを作成する力,作成したプログラムの動作を確認したり,不具合の修正をしたりする力を養う。
その際,処理の効率や分かりやすさなどの観点で適切にアルゴリズムを選択する力,表現するプログラムに応じて適切なプログラミング言語を選択する力,プログラミングによって問題を解決したり,コンピュータの能力を踏まえて活用したりする力を養う。
[学習指導要領解説(平成30年告示)情報編 33ページ]

たくさん『力』が出てきましたが、特に注目したいのが、
①適切にアルゴリズムを選択する力
②適切なプログラミング言語を選択する力
この2つの力です。
教師が指示した通りのプログラムを組むのではなく、問題解決のためにどのアルゴリズムにすれば良いか選択し、更に適切な言語を選ぶ力を養う必要があるのです。
1つの言語しか教えなければ選択できないので、『言語を選択する力』を養うことはできません。複数の言語を授業で取り扱い、「この問題解決のためにどの言語を使えばよいでしょう?」という所まで求められています。
…これは難しい!

具体的な内容は?

ではそれらの力を身に着けさせるために、どのような内容の授業を行えば良いのでしょうか。

 例えば,気象データや自治体が公開しているオープンデータなどを用いて数値の合計,平均,最大値,最小値を計算する単純なアルゴリズムや,探索や整列などの典型的なアルゴリズムを考えたり表現したりする活動を取り上げ,アルゴリズムの表現方法,アルゴリズムを正確に表現することの重要性,アルゴリズムによる効率の違いなどを扱うことが考えられる。
[学習指導要領解説(平成30年告示)情報編 33ページ]

『数値の合計,平均,最大値,最小値を計算する単純なアルゴリズムや,探索や整列などの典型的なアルゴリズムを考えたり表現したりする活動』とは、EXCELで言う所のSUM関数、AVERAGE関数などを自分で作ることから始まり、配列の要素を調べたり並べ替えたりすることを言うのでしょう。
しかし、注意点があります。

 その際,アルゴリズムを基に平易にプログラムを記述できるプログラミング言語を使用するとともに,アルゴリズムやプログラムの記述方法の習得が目的にならないよう取扱いに配慮する。
[学習指導要領解説(平成30年告示)情報編 33ページ]

例えば『教師がJavaが得意なのですべてをJAVAで行う』というような状況は好ましくなく、複数の言語に触れた上でそれぞれの言語の良さを理解し、適切な選択しなければならないにもかかわらず、『言語の取得が目的であってはならない』ということです。
これは、書くのは簡単ですが実際に授業するとなるとかなり難しそうです。
また、更に注意が述べられています。

また,プログラミングによってコンピュータの能力を活用することを取り上げ,対象に応じた適切なプログラミング言語の選択,アルゴリズムをプログラムとして表現すること,プログラムから呼び出して使う標準ライブラリやオペレーティングシステム及びサーバなどが提供するライブラリ,API(ApplicationProgrammingInterface)などの機能,プログラムの修正,関数を用いてプログラムをいくつかのまとまりに分割してそれぞれの関係を明確にして構造化することなどを扱うことが考えられる。その際,プログラミング言語ごとの固有の知識の習得が目的とならないように配慮する。
[学習指導要領解説(平成30年告示)情報編 33ページ]

アルゴリズムを理解していく上で、複雑なアルゴリズムは細かい機能に分けて考え、その細かい機能を関数として構造化することが推奨されています。しかし、その言語の固有の知識には触れることは好ましくないらしいです。
どの言語にも共通して使える考え方を養う必要があるということでしょう。

最後に

学習指導要領を読めば読むほど、『Scratchで適当にネコを動かしてプログラミング教育をやったことにする』というわけにはいかない事がお分かりだと思います。こちらも適切な知識を身に着けて目的に応じた課題を用意して、2年後に始まる高校でのプログラミング教育に備えましょう。

この記事が気に入ったらサポートをしてみませんか?