メディア

STEMを取り入れた「夏休みの自由研究」型パッケージ教育のすすめ踊るバズワード 〜Behind the Buzzword(15)STEM教育(3)(2/8 ページ)

» 2021年09月29日 16時30分 公開
[江端智一EE Times Japan]

度肝を抜く試験問題

 まず、「プログラミング教育」について、前半を始めたいと思います。

 第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.

RSSフィード

公式SNS

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from AspenCore LLC.