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

プログラミング教育

こんにちは。福田泰裕です。

令和3年度から、高校でもプログラミング教育がスタートします。
小学校ではScratchなどを用いたビジュアルプログラミングが行われていますが、高校のプログラミング教育では何を教えれば良いのでしょうか?
「何を教えたらよいのか分からない…」そういった不安を抱えておられる先生方はとても多いと思います。
今回は新しい学習指導要領を読み、何をどう教えて、どのような力を身に着けさせれば良いのか見ていきましょう。

前半をまだ読まれていない方は、こちらからお読みください。👇

それでは、後半の解説を始めます。

身に着けさせる力とは?

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

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

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

学習指導要領解説(平成30年告示)情報編 33ページ

たくさん『力』が出てきましたが、特に注目したいのが、

①適切にアルゴリズムを選択する力
②適切なプログラミング言語を選択する力


この2つの力です。
教師が指示した通りのプログラムを組むのではなく、問題解決のためにどのアルゴリズムにすれば良いか選択し、更に適切な言語を選ぶ力を養う必要があるのです。

1つの言語しか教えなければ言語の選択はできないので、『言語を選択する力』を養うことはできません。複数の言語を授業で取り扱い、「この問題解決のためにどの言語を使えばよいでしょう?」という所まで求められています。

…これは難しい!

具体的な内容は?

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

 例えば,気象データや自治体が公開しているオープンデータなどを用いて数値の合計,平均,最大値,最小値を計算する単純なアルゴリズムや,探索や整列などの典型的なアルゴリズムを考えたり表現したりする活動を取り上げ,アルゴリズムの表現方法,アルゴリズムを正確に表現することの重要性,アルゴリズムによる効率の違いなどを扱うことが考えられる。

学習指導要領解説(平成30年告示)情報編 33ページ

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

しかし、注意点があります。

 その際,アルゴリズムを基に平易にプログラムを記述できるプログラミング言語を使用するとともに,アルゴリズムやプログラムの記述方法の習得が目的にならないよう取扱いに配慮する。

学習指導要領解説(平成30年告示)情報編 33ページ

例えば『教師がJavaが得意なのですべてをJaveで行う』というような状況は好ましくありません。
複数の言語に触れた上でそれぞれの言語の良さを理解し、適切な選択しなければならないのです。

しかし、『言語の取得が目的であってはならない』ということです。

これは、言うのは簡単ですが実際に授業するとなるとかなり難しそうです。
また、更に注意が述べられています。

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

学習指導要領解説(平成30年告示)情報編 33ページ

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

どの言語にも共通して使える考え方を養う必要があるということでしょう。

最後に

学習指導要領を読めば読むほど、『Scratchで適当にネコを動かしてプログラミング教育をやったことにする』というわけにはいかない事がお分かりだと思います。

プログラミングを教える教員も適切な知識を身に着けて目的に応じた課題を用意して、これから高校でのプログラミング教育に備えましょう。

最後までお読みいただき、ありがとうございました。

質問やご意見、ご感想などがあればコメント欄にお願いします👇

コメント

タイトルとURLをコピーしました