コンピューターと宇宙が大好きな塾長です。プログラミングやコンピューターの知識が大学入試でも出題されます。3月24日、大学入試センターがその「サンプル問題」を発表しました。新しく加わる「情報」という科目に注目です。どんな問題?傾向と対策は?難易度はどれくらい?気になりますよね。詳細を見ていきましょう。大学入試でプログラミング!いつから?2025年1月に実施される共通テストからです。この4月から受験生になる中学3年生の世代からが対象です。平成19年4月1日生まれにあたる学年以降です。この学年が教育改革が完成してから大学を受験する最初の世代となります。この学年以降は、完全に新しいカリキュラムへ移行します。教科書改訂が全面的に導入され、高校入試の出題傾向も新しくなります。高校に進学した瞬間に、高校でも教科書改訂です。新しいカリキュラムで高校3年間を過ごすので、大学入試も新傾向になるというワケです。高校では、論理国語やプログラミングなどを新設した新指導要領の最初の世代そして大学入試も新指導要領の形式へ完全移行この世代からは、てんこ盛りの大学入試です。そもそも情報ってどんな教科?高校の情報科は2科目です情報1(必須科目)情報2(選択科目)という構成です。このうち大学入試に出題されるのは「情報1」の方です。情報1は高校1年生または2年生で履修するようです。多くの高校は1年生になるでしょう。いうことで、まず「情報1」の章構成から確認しましょう。ネットワーク技術、データ形式、データベース、統計・解析などこれらのうち、プログラミングを実践するのは第3章と第4章です。だいたい高1の2学期後半からがプログラミングになりそうですね。そこで、この情報1の「プログラミング」について、その実態を見てみましょう。想定されるプログラミング言語プログラミングといえば最初に気になるのが「言語」です。高校では何語でプログラミングをするのか?これが気になります。それを知ることができる参考資料を見つけました。(文部科学省)この中の演習で使われているプログラミング言語は3つです。グラフ表示:ggplot2)SQLプログラミング初心者の人にとっては、頭が痛くなるような用語が並びますね。少なくとも3種類のプログラミング言語は学ぶということを知っておいてくださいませ。Python(パイソンと読みます)は、外部機器の制御や数学モデル、物理モデルのシミュレーションで使われていました。Rは、形態素解析を使って単語の出現頻度を分析したり、箱ひげ図やグラフ図を表示するのに使われていました。SQLは、リレーショナルデータベース専用の言語ですが、その演習問題が少しありました。ちなみに、これらのプログラミング言語は、無料で入手できます。関数やグラフ機能が使われていました。箱ひげ図や散布図の表示、相関係数の計算、回帰分析や統計的仮説検定などにExcelが使われていました。補足3月30日に検定を通った情報1の教科書が一部で公開されました。ニュースによれば、ScratchJavaScriptを使っている教科書もあるようです。どんなプログラミングが出題されるの?高校の教科書で扱われるプログラミング言語が分かりました。次に気になるのが、どのように出題されるのか?です。そこで3月24日に発表されたサンプル問題の実際を見てください。ソースは「大学入試センター」です。ご覧のとおり、大学入試では特定のプログラミング言語に依存しないような問題文で出題されます。何らかのプログラミング言語を使ってプログラミングした経験がなければ、問題文の意味すら分からないという状況です。上の問題文を見れば、それがお分かりと思います。プログラミング言語の知識レベル情報1の教科書では3種類のプログラミング言語が紹介されるのでした。特定のプログラミング言語に依存しないようなプログラムの書き方で出題されるようです。プログラミングの実体験を通じてプログラミングの「センス」を身に着けておく必要がある、ということです。PythonでもRでも他のプログラミング言語でも良いですが、経験を通じて「センス」を磨けということです。「プログラミングのセンス」とは、いったい何なのでしょうか?結論から言えば、次のような概念をプログラムで表現したり使い分けたりできる能力です。情報1の内容からすれば、次のデータ構造が出題されても当然と予想します。辞書型(連想配列、キー・バリュー形式のデータ)集合型(順序がなく重複を許さない形式のデータ)とはいえ、古いプログラミング言語では存在しないデータ型です。教員側の研修が間に合わない懸念などがあれば、もしかしたら出題されないかもしれません。教科書ではデータ形式を学ぶ中で、どうしても上のデータ型が出て来ます。APIでインターネットから情報を取得する単元では、JSON形式というデータ形式が「キー・バリュー形式」の1つとして紹介されています。「辞書型」、JavaScriptやPHPなどでは「連想配列」と呼ばれています。その基礎になっているデータ構造が「集合型」です。どちらも現代の情報処理では必須のデータ構造ですが、古いプログラミング言語には存在しません。大学入試の範疇になるかどうかは、様子見ですね。情報1の中でフローチャートも学びます。フローチャートを使えば、特定のプログラミング言語によらずに、プログラムの流れを記述することができます。考えれば、プログラミングの試験は全てフローチャートでやれば良いじゃんという素朴な疑問が生まれます。ここで高校は「高等教育」であることを忘れてはいけません。高校のプログラミング教育は、実際にプログラミング言語を使った情報処理やシミュレーションが想定されています。義務教育とは違い、より実践的なのです。フローチャートでは「変数に値を代入する」などといった細かいことは表現しません。データの型の違いや配列の添え字処理などは、実際にプログラミングしてみないと感覚がつかめません。プログラミングの実践的な能力までテストしようとすれば、フローチャートでは不十分。大学入試センターは、きっとそのように判断したのでしょう。いうワケで、フローチャートで論理的にプログラムの流れを書けるだけでは不十分です。何か好きなプログラミング言語を1つ決めて、普段から少しずつプログラミングに慣れていく必要があるでしょう。勉強の中に、情報処理やシミュレーションをコンピューターで日常的に行う習慣を組み込んでいく必要があります。pythonをおススメします。Pythonはマイナーです。文系理系を問わず多く使われています。日本のプロがPythonをそれほど使わないのは、日本の産業が「ハードウェア中心」「ものづくり中心」だからです。日本では英語が読めないプログラマーや数学ができないプログラマーが多いため、海外の最先端に比べると技術が古かったり偏ったりしています。ものづくり系ではC言語が主流で、Web開発系ではPHP、ゲーム開発ではC#やJavaという感じですね。今後はPythonや他の言語を使う人口が増えてくると思います。どちらにしても、1つのプログラミング言語を通じてプログラミングのエッセンスを学ぶなら、文法の細かいことは少ない方が良いです。Pythonで学びましょう。数学の「統計」を知っていることが大前提プログラミング言語の話に偏ってしまいました。ここで決して忘れてはならない大前提を書いておきます。それは、あらゆる学年で学んできた「統計」の知識が前提だということです。具体的には以下の数学が問題文中にバンバン出て来ます。「情報」の試験であるため、数学Bの知識をどこまで使うかは微妙です。数学を高度にしてしまうと、数学Bとの試験の区別が無くなります。数学Bとのすみ分けは考慮されるだろうと思います。教育改革で継続的に強化されてきた数学の分野が「統計」です。英語の4技能と並んで、数学の統計も強化しています。プログラミングは「人間の考え」を「コンピューターが分かる言い方」に翻訳していく作業と言えます。いえ、翻訳できるのは、人間の考えのうちのほんの1部。人間が「厳密に論理的に考えている部分」だけになります。人間が論理的に考えていることを超厳密に表現できるのが「数学」です。コンピューターと数学が切っても切り離せないのはそのためです。物理シミュレーションのように、テーマによっては他の数学や物理の公式も使うことがあります。入試問題用の「方言」が生まれる危険性サンプル問題に載っているプログラムを見て感じた違和感が1つあります。色々なプログラミング言語を経験して来た人ならすぐ分かることです。それは、中途半端なプログラムだということです。「オブジェクト指向プログラミング」を暗黙のうちに前提にしています。どっちかにしろよ!などと突っ込みたくなる中途半端なプログラミングなのです。変数名がローマ字というセンスも古臭いですね。ちなみに最近のプログラミング言語は、変数名を日本語にしてもOKです。日本語にするか英語にするか、どっちかにしろよ!などなど突っ込みたくなります。技術的にも文化的にも変な問題文になっています。入試対策としてプログラミングの「方言」を入試用に学ぶ必要が出てくるかも?という懸念です。今回のサンプル問題の出し方は、フローチャートよりも実践的な能力を試すための苦肉の策だったと言えます。いえ、その策が「共通テスト用の方言」を生んでしまうのは良くありません。特定のプログラミング言語に依存しないようなプログラムの見せ方をどのように表現するのか。これが、大学入試センターにとって大きな大きな課題でしょう。考えられる1つの案としては、フローチャートとのハイブリッド的な記載でしょうね。マイクラミングのプロコースはPython最後は宣伝です。ヒーローズ植田一本松校では、プログラミング教室「マイクラミング」を開講しています。プログラミングの根本的な考え方から超丁寧に学びます。ジュニア~ハイコースは、主に義務教育に対応しています。プログラミング言語はScratch(スクラッチ)です。プロコースは、高等教育に対応しています。ハイコース卒業生か、それと同等以上の生徒が対象です。Pythonを使います。日本では、Pythonを使うプログラミング教室の多くが、WebサーバーやWebアプリの開発を学ぶ社会人向けです。中には大学数学を持ち込んで人工知能の開発へジャンプしてしまうコースもあります。中学生や高校生に合ったコースを見つけるのは、なかなか大変です。中学や高校で習う数学の知識を活用しるようなコースともなれば、さらに見つけるのが大変になります。自分の息子にやらせたいと思えるプログラミング教室が無い!そう考えて開発したのがマイクラミングでした。私が塾の先生として、息子にやらせるものとして、独自に開発しました。プログラミングの考え方や本質を学べるように、ちゃんと学校で学んだことを活用するように、念入りに開発しました。その考え方に共感してくれる教室が、だんだん増えてきました。卒塾生(進路が確定するまで在籍していた生徒)が入学した学校の一覧です。お友達登録はこちらLINE登録するとプレゼントがもらえます!【会員限定】お子様の成績と可能性を伸ばす18個のノウハウ塾関係者様のお友達登録はこちらLINE登録するとプレゼントがもらえます!「zoomで簡単。http://urx.blue/HCgL2021.03.25マインクラフト「プログラム」と「コマンド」の違いとは?宇宙とコンピューターが好きな塾長です。マインクラフトのプログラミング教室をやってきて、今年で4年目くらいです。プログラミングとは何か?まだまだ、これを説明する必要性があるのですが、ちょっとした課題も感じています。言えますか?作業頭になっている危険性マイクラのコマンド。プロンプトのコマンド。何かのゲームで裏技的に使うコマンド。そのようなコマンドを「打つ」ことが「プログラミング」なのだと思い込んでいる人たちがいるのです。プログラミング経験が無くて何だかわからずにそう思うのは仕方がありません。知らないで、あてずっぽうに想像しているだけならば問題ないです。問題なのは、プログラミングを経験してもなお、そう思い続けている人たちです。「作業頭」になってしまっていることです。「作業」は必要なことですが、多くの場合は工夫して、減らしたり無くしたりできます。それをせずに、ただ同じ作業を繰り返すだけ、つまり考えることを放棄している状態を「作業頭」と私は呼んでいます。創造力を発揮するのとは逆の意味です。なっている危険性があります。ゲーム依存症の人たちに多いです。「めんどくさい」が口癖です。傍から見ると、面倒な行動をわざわざ好んでやっているように見えます。いう人たちに「プログラミングの良さ」を伝えるのって、すごく難しいんですよね。それが最近感じている課題です。コマンドとプログラムの区別がつかない子供や大人たち私のプログラミング教室ではマインクラフトを使っています。プリンターやディスプレイの代わりです。プログラミングの結果が真っ黒な画面に表示されても、何も面白くありません。結果の表示先をマインクラフトにしているワケです。そのマインクラフトには「コマンド」と呼ばれる機能があります。詳細はあとで説明しますが、そのコマンドをプログラムだと勘違いしている人をたまに見かけます。お子さんだけではなくて、大人でも勘違いしている人がいます。区別できないとマズイのか?初めての人なら、この勘違いは仕方がありません。勘違いしたままではマズイです。社会人でこの区別がつかないのは、かなり深刻です。「作業」と「仕組み」の区別がついていないってことです。マイクラの豆腐建築で考えてみるここでマインクラフトのコマンドについて少し説明します。下のような豆腐建築を考えてみます。1辺が5ブロックの立方体で、中をくり抜いただけ。(マイクラの世界では直方体の単純な建て物のことを豆腐建築と呼ぶそうです)普通に作業するなら、プレイヤーはブロックを1つ1つ置いて建築します。1辺が5ブロックの大きさなら、必要なブロックの数は82個です。これを1つ1つ置いて建築を進めます・・・めんどうですね。そこでコマンドを使えば、たった3行です。airこの例ではマイクラのfillコマンドを使っています。コマンドは「2つの座標を対角とする直方体」を石や空気で埋めつくしてくれます。(高校数学で習う立体空間の座標ですから、少し慣れが必要です。塾生は小学生でも理解しています。)そして紛らわしいことに、プログラミングでも同様に3行です。プログラムで豆腐建築(スクラッチの場合)やっていることはfillコマンドと一緒です。ちなみに、Pythonでプログラミングすると、こうなります。プログラムで豆腐建築(Pythonの場合)mc.setBlocks(1,0,1,5,4,5,1,0)mc.setBlocks(2,0,2,4,3,4,0,0)mc.setBlocks(3,0,1,3,1,1,0,0)おやまぁ。コマンドとプログラム。1も2も3も、確かに似ています。コマンドもプログラムも形が似ている手数も同じコマンドもPythonも英語で、なんか上級っぽいこれだけ共通していれば、勘違いしてしまうのも無理がありません。口を酸っぱくして言わなければなりません。違います!コマンドは「作業」ですが、プログラムは「仕組み」です。逆に、この2つの違いが言えるようになることがプログラミングって何?を理解する第一歩なのかもしれませんね。コマンドとプログラムの違いを挙げてみよう!コマンドもプログラムも、コンピューターに命令を与える点では同じです。コマンドをいくつも実行していけば、プログラムと同じ結果を得られます。コマンドは実行したら終わりです。そこで消えてしまいます。上の豆腐建築で考えてみましょう。建物が壊れたり、ワールドを作り直したりした後で、また豆腐建築をやり直すとしましょう。なると、また3行のコマンドを打ち直す必要があります。コマンドは消耗品です。同じことを10回するためには、同じコマンドを10回打ちなおす必要があります。打ち直す回数が増えればミスの回数も増えますし、時間も体力も消耗します。プログラムであれば、実行ボタンを押すだけです。最初よりも2回目以降の方が、むしろ楽です。回数が何回に増えようが、人間の行動は1回であることに変わりありません。複雑で大きな作業になったらどうでしょう。豆腐建築を5軒×4列=20軒で並べて村を作りたい。こんな村を作るならどうでしょうか。コマンドであれば1軒で3行ですから、3行×20軒=60行を打ち込む必要があります。プログラミングならこうなります。豆腐建築を10軒×10列=100軒で並べて町を作りたい。気が変わっても、プログラムならすぐ対応できます。「4回繰り返す」「5回繰り返す」をともに「10回繰り返す」に変更するだけです。建物の色を1軒1軒変えたい。なったらどうでしょうか。コマンドの場合は、大量かつ複雑になります。プログラムならば1行の修正で済みます。このように、やることが複雑になるほど、大規模になるほど、プログラムは威力を発揮します。プログラムがコマンドより優れている点コマンドの限界はすぐに感じます。「蓄積したノウハウを他の人に渡す」などなど。やるたびに消えてしまうコマンドでは、こうしたことができません。いう時こそプログラムの出番です。プログラムがコマンドよりも優れている点をまとめるとこうなります。再利用できる複雑なこともできる大量の作業もできる速く正確にできる人に渡せる蓄積できる改良できるこれを一言でまとめると、プログラムは「仕組み」です。コマンドはその場その場で終わってしまいます。結果を得ることはできますが、その場限りの成果です。コマンドは「作業」だと言えます。仕組みを作れるプログラミングの方が、作業の効率化や発明につながるというワケです。未来を考えるからプログラミングの価値が出るマインクラフトはゲームですから、一瞬また一瞬を、刻々と楽しむものです。今さえ良ければ満足という感覚の連続です。そもそもゲームってそういうものです。ゲーム操作のほとんどは、その場限りの操作です。その場限りの行動とその場限りの満足。未来のことまで考え出したらどうでしょう。マインクラフトの世界に「未来」を加えると、状況が変化してくるわけです。したら、また同じことをやるかもしれないもっと速く便利にしたい他の人もできるようにしたいこのような想像力を働かせたときに、初めてコマンドの限界を感じるようになります。そこでプログラミングの出番になるワケです。人間と動物の理性を区別する1つが「未来」を考えられるか否かだそうです。将来に備える複雑なことを簡単に実現する人と協力する社会に貢献するこうした未来志向の欲求に応えるのがプログラミングです。未来志向が強くなるほど、プログラミングの価値がよく分かるようになるでしょう。ゲーム操作をプログラミングするのはムダ逆に1回しかやらないことであれば、プログラミングのメリットはほとんどありません。1回しかやらないのですから、コマンドを3行打つことも、プログラムを3行書いて実行することも、同じです。コマンドの方が楽かもしれません。同じように、たとえば、モンスターをスポーンさせるプレイヤーを動かしてゲームを進めるなどといったゲーム操作をプログラミングしたところで、何の価値もありません。子供たちにとっても、何も面白くないでしょう。そもそもゲーム操作の多くは1回1回の使い捨てだからです。ゲーム操作をプログラミングするなんて、やらない方がましです。純粋にゲームとして楽しんだ方が良いと思います。マインクラフトのプログラミングを「ゲームの自動化」だと思っている限り、プログラミングの価値は理解できません。マインクラフトに未来志向を持ち込むからこそ、プログラミングの必要性が発生します。まとめ未来志向が無ければ、コマンドとプログラムの区別がつきません。目の前の作業をこなすだけのコマンド未来の仕組みをつくるプログラムこの違いが本当に分かっていることが大切だと思います。マインクラフトをプログラミングで使うなら、ぜひ仕組みを作りましょう。1回しかやらないゲーム操作をプログラミングしても、面白くないし、価値がありません。それでコマンドとプログラムの区別がつかなくなるなら、なお悪いです。ゲームはゲームで楽しみましょう。プログラムをつくるなら、ぜひ「仕組み」をつくりましょう。普通では味わえないようなマインクラフトの世界をどんどん創造して欲しいと思います。(進路が確定するまで在籍していた生徒)が入学した学校の一覧です。お友達登録はこちらLINE登録するとプレゼントがもらえます!【会員限定】お子様の成績と可能性を伸ばす18個のノウハウ塾関係者様のお友達登録はこちらLINE登録するとプレゼントがもらえます!「zoomで簡単。数学を全部解説してみたII塾長です。昨日は公立高校入試B日程の学科試験でした。今日の面接試験で愛知県の高校入試がひと段落します。前回に引き続き、B日程の数学についても解説をつくりました。中学2年生までの知識でも半分くらいは解ける問題です。あとの半分は中学3年生になってからチャレンジしてみましょう。植田中学では、2年生にA日程の問題を解かせて授業中に解説してくれたみたいです。学校の授業中で消化しきれなかった入試問題について、生徒たちから質問が来るようになりました。このブログが家庭学習にも役立てば幸いです。そのため、できるだけ発想や考え方の過程についても書いておきました。【1】次の(1)から(10)までの問に答えなさい。