STEMを取り入れた「夏休みの自由研究」型パッケージ教育のすすめ:踊るバズワード 〜Behind the Buzzword(15)STEM教育(3)(2/8 ページ)
今回は、STEMを取り入れた新しい教育を提案します。併せて、プログラミング教育×STEM教育の方程式から導き出せる、「理系日本人補完計画」という壮大な妄想(?)を語ってみます。
度肝を抜く試験問題
まず、「プログラミング教育」について、前半を始めたいと思います。
第1回、第2回と連続して、我が国のプログラミング教育についての、解説と感想(というか、はっきり言って批判)をしてきました。例えば、こんな感じのことです。
前回のコラムの脱稿後も、私は、論文やら資料やらを探しては、手当たり次第に読んでいたのですが、どうも、「プログラミング的思考」というものが分からずに、ずっと迷走していました。
私(江端)は、仕事やコラム執筆で、これまで、数行のスクリプトから、数万ステップのパッケージソフトまで、膨大な数のプログラムを書き続けてきたので、文部科学省のいう「プログラミング的思考」は、ボンヤリとは理解できます。
しかし、これは、無数のプログラミングという作業の経験から得られる思想(イデオロギー)であって、他人に伝達可能な「技術」であるとは思えないのです。何というか、言語で説明できないのです。これを説明することは、『スキーの教本を読んだだけで、分かったような気になって、そのままスキー板を抱えてゲレンデデビューするような無謀さ』という感じがします。
というわけで、今回のコラムでは、アプローチを変えることにしました。
あまり好ましい言い方ではありませんが、教育機関が、子どもに何を与えているのかを、もっとも露骨に示すイベントがあります ―― それは、定期テストであり、入学試験です。
教育機関は、子どもたちに、テストで高得点を得られるように訓練し……もとい、教育し、入学試験に合格させて、その子どもを別の施設に移転させる……もとい、入学させることで、その任を終えます ―― ですよね?
さて、文部科学省の、今後の「プログラミング教育」のマイルストーンは以下のように予定されています。
私は、新教科「情報」において、どんな試験問題が出題されるのかを考えてみました。
まず、プログラミングに関する出題と言えば、私もかなり使った「情報処理技術者試験」だろうと考えました。
私は、「(今では廃止されている)情報処理技術者第1種」と、「ネットワークスペシャリスト」に合格しています ―― が、まあ、会社ではあまり評価対象となっていないようです(著者のブログ)し、私もそんな資格でエンジニアの「能力」は評価しません。でも、社会では「受験を試みたという『事実』」は評価されているようです。
情報処理技術者試験のプログラミングに関する出題パターンは、20年前からあまり変わっていないようです。
ここがマークシートではなく、実際のコードを、手書きで記入します(ちなみに、回答は、イ:tを1からKまで1ずつ増やす、ウ:flag←0、エ:flagが0と等しい、オ:cluster[s]←min_index(grav_length)、になります)。
まあ、これもプログラミングには違いがないのですが、プログラムの一部を補うだけに過ぎません。文部科学省のいうところの「プログラミング的思考」とは違うかなぁ、という感じがしました。
まだ大学入試で、「情報」の試験はまだ始まっていないのですから、当然過去問はありませんが、サンプル問題くらいはどこかにあるんじゃないかと思って、探しまわっていたら、ここで見つけました。そのターゲットの問題は、こちらです。
ダウンロードして、印刷して ―― そして、可能なら、自力で問題を問いてみてください。
―― びっくりしますから。
最初、私は、『こちとら、ITでメシを食っているプロのエンジニアだ。高校生の「情報」の問題なんざ、サクっと問いてやる』 ―― と思っていたんですよ、本当に。
第1問の問1あたりでは『ほう、過去の災害を実例にしたインターネットの役割に関する問題か。なかなか着眼点がいいな』と言いながらサクっと解き、問2も、『この程度の資料が分からなければ、顧客プレゼンも学会発表もできないしな』と言いつつ、各問2秒で解きました。
問3は、『これって、実際に、画像処理のコーディングをやったことがないと、解けないかもしれないが……、でもまだ暗記の知識で解ける問題だな』と、これも秒単位で解きました。
変だな、と思い始めたのは、問4あたりからでした。
「IPネットワークのサブネットの設定? これ実際に、ネットワークの設定やってみないと分からないんじゃないかな? そもそも、高校生が、サブネットのビット長とか設定するかな?というか、デフォルトで192.168.0.0/24をクラスCで使うか、DHCPに設定するだけだろう?」と、ちょっと不穏な気持ちになってきました*)。
*)ちなみに、我が家の娘たちは、DHCPはもちろん、IPアドレスも理解していません。Wifiは、WPA2のパスコードで動き出すと思っています。
衝撃を受けたのは、第2問の「比例代表制度選挙の選出アルゴリズム」の問題でした。
問1は、情報処理技術者試験と、ほぼ同じ趣旨の「コードの穴埋め」問題でしたが ―― これ、前述のK-mean法の問題ほど単純ではなく、問題を正確に読み込まないと正解を導けない内容でした。
実際、私、この問題の内容が読みとれなくて、実際に自分でC言語でプログラミングをして、その結果を問題文と比較した程です。
問2は、自分の頭の中に仮想コンピュータを作って、その仮想コンピュータを実際に動かして、変数が変わっていく様子を追跡するという、デバッグ&トレースを模した問題でした。
そして、問3は、プログラミングの真髄である、『ほんの数行の変更で、プログラミングの内容を劇的に変化させる』コード改修の実例でした ―― しかも、その改修の出題が『うまい』。
仮に、上記、問1、問2の答が分からなくても、ここに入るべきコードは、一意に決まるようにできています。
で ―― 正直に言いますが、私、問題の内容が理解できなくて、プログラムをデバッグ繰返して、問題に記載されている答に近づくように、自分のプログラム(C言語)のデバッグを続けて、正解に至りました。
同業者の方は、すぐに気がつかれたと思いますが、
―― 私の頭の仮想コンピュータの能力は、『受験生以下』
ということです。
私は、コンピュータに対して、ブラックボックスアプローチ(正解に至るまで、何度もやり直す)という手法で、その場をしのいでいる、かなり低レベルのプログラマーである、ということです。
Copyright © ITmedia, Inc. All Rights Reserved.