コンピューターと宇宙が大好きな塾長です。
プログラミングやコンピューターの知識が大学入試でも出題されます。
3月24日、大学入試センターがその「サンプル問題」を発表しました。
新しく加わる「情報」という科目に注目です。
どんな問題?
傾向と対策は?
難易度はどれくらい?
気になりますよね。
詳細を見ていきましょう。
Contents
大学入試でプログラミング!いつから?
2025年1月に実施される共通テストからです。
つまり、この4月から受験生になる中学3年生の世代からが対象です。
生年月日で言えば、
- 2006年4月2日生まれ ~ 2007年4月1日生まれ
- 平成18年4月2日生まれ ~ 平成19年4月1日生まれ
にあたる学年以降です。
この学年が教育改革が完成してから大学を受験する最初の世代となります。
つまり、この学年以降は、完全に新しいカリキュラムへ移行します。
教科書改訂が全面的に導入され、高校入試の出題傾向も新しくなります。
そして高校に進学した瞬間に、高校でも教科書改訂です。
新しいカリキュラムで高校3年間を過ごすので、大学入試も新傾向になるというワケです。
- 小学校では、移行措置的に英語が準必須化
- 中学校では、教科書改訂およびパソコン1人1台が導入された世代として初の高校入試
- 高校では、論理国語やプログラミングなどを新設した新指導要領の最初の世代
- そして大学入試も新指導要領の形式へ完全移行
この世代からは、てんこ盛りの大学入試です。
そもそも情報ってどんな教科?
高校の情報科は2科目です
- 情報1(必須科目)
- 情報2(選択科目)
という構成です。
このうち大学入試に出題されるのは「情報1」の方です。
情報1は高校1年生または2年生で履修するようです。
多くの高校は1年生になるでしょう。
ということで、まず「情報1」の章構成から確認しましょう。
- 情報社会の問題解決
→ 問題解決の流れ、モラル、法規、セキュリティ、リテラシーなど - コミュニケーションと情報デザイン
→ デジタル情報の技術や種類、情報の収集法・表現法・評価法など - コンピューターとプログラミング
→ 論理演算、誤差、制御、データの基本構造、アルゴリズム、モデル化とシミュレーションなど - 情報通信ネットワークとデータの活用
→ ネットワーク技術、データ形式、データベース、統計・解析など
これらのうち、プログラミングを実践するのは第3章と第4章です。
だいたい高1の2学期後半からがプログラミングになりそうですね。
そこで、この情報1の「プログラミング」について、その実態を見てみましょう。
想定されるプログラミング言語
プログラミングといえば最初に気になるのが「言語」です。
高校では何語でプログラミングをするのか?
これが気になります。
それを知ることができる参考資料を見つけました。
2020年7月に文部科学省が高校の先生向けに出した研修資料です。
この中の演習で使われているプログラミング言語は3つです。
- Python 3系 (数学関数:math、 グラフ表示:matplotlib、 確率や行列:numpy)
- R (パイプ処理:dplyr、 形態素解析:RMeCab、 グラフ表示:ggplot2)
- SQL
プログラミング初心者の人にとっては、頭が痛くなるような用語が並びますね。
まぁ、とにかく、
少なくとも3種類のプログラミング言語は学ぶ
ということを知っておいてくださいませ。
Python(パイソンと読みます)は、外部機器の制御や数学モデル、物理モデルのシミュレーションで使われていました。
Rは、形態素解析を使って単語の出現頻度を分析したり、箱ひげ図やグラフ図を表示するのに使われていました。
SQLは、リレーショナルデータベース専用の言語ですが、その演習問題が少しありました。
ちなみに、これらのプログラミング言語は、無料で入手できます。
プログラミング言語以外では、Excel の関数やグラフ機能が使われていました。
箱ひげ図や散布図の表示、相関係数の計算、回帰分析や統計的仮説検定などにExcelが使われていました。
補足
3月30日に検定を通った情報1の教科書が一部で公開されました。
ニュースによれば、
- Scratch
- JavaScript
を使っている教科書もあるようです。
どんなプログラミングが出題されるの?
高校の教科書で扱われるプログラミング言語が分かりました。
次に気になるのが、
どのように出題されるのか?
です。
そこで3月24日に発表されたサンプル問題の実際を見てください。ソースは「大学入試センター」です。
ご覧のとおり、大学入試では特定のプログラミング言語に依存しないような問題文で出題されます。
しかしながら実際には、
何らかのプログラミング言語を使ってプログラミングした経験がなければ、問題文の意味すら分からない
という状況です。
上の問題文を見れば、それがお分かりと思います。
プログラミング言語の知識レベル
情報1の教科書では3種類のプログラミング言語が紹介されるのでした。
一方、上で見たように、入試問題では、
特定のプログラミング言語に依存しないようなプログラムの書き方
で出題されるようです。
つまり、プログラミングの実体験を通じてプログラミングの「センス」を身に着けておく必要がある、ということです。
PythonでもRでも他のプログラミング言語でも良いですが、経験を通じて「センス」を磨けということです。
それでは逆に、
「プログラミングのセンス」
とは、いったい何なのでしょうか?
結論から言えば、次のような概念をプログラムで表現したり使い分けたりできる能力です。
データ型の種類について
- 整数型
- 小数型
- 文字列型
- 配列型
演算について
- 四則演算
- 論理演算
文法について
- 変数の初期化
- 変数への代入
- 添え字による配列の参照
- 添え字による配列への代入
制御の種類について
- 順序処理(プログラムが上から下へ実行される前提)
- 繰り返し処理
- 条件分岐処理
- 繰り返しの中で添え字をインクリメントする考え方
その他
- 「表示」「切り捨て」などの関数はプログラミング言語に依存しない表記
- オブジェクト指向プログラミングが前提(型の自動変換、文字列の足し算など)
まだ不明な点
情報1の内容からすれば、次のデータ構造が出題されても当然と予想します。
- 辞書型(連想配列、キー・バリュー形式のデータ)
- 集合型(順序がなく重複を許さない形式のデータ)
とはいえ、古いプログラミング言語では存在しないデータ型です。
教員側の研修が間に合わない懸念などがあれば、もしかしたら出題されないかもしれません。
教科書ではデータ形式を学ぶ中で、どうしても上のデータ型が出て来ます。
例えばWeb APIでインターネットから情報を取得する単元では、JSON形式というデータ形式が「キー・バリュー形式」の1つとして紹介されています。
これは Python では「辞書型」、JavaScriptやPHPなどでは「連想配列」と呼ばれています。
その基礎になっているデータ構造が「集合型」です。
どちらも現代の情報処理では必須のデータ構造ですが、古いプログラミング言語には存在しません。
大学入試の範疇になるかどうかは、様子見ですね。
フローチャートでプログラミングを学ぶだけでは不十分
情報1の中でフローチャートも学びます。
フローチャートを使えば、特定のプログラミング言語によらずに、プログラムの流れを記述することができます。
そう考えれば、
プログラミングの試験は全てフローチャートでやれば良いじゃん
という素朴な疑問が生まれます。
しかし、ここで高校は「高等教育」であることを忘れてはいけません。
高校のプログラミング教育は、実際にプログラミング言語を使った情報処理やシミュレーションが想定されています。
義務教育とは違い、より実践的なのです。
フローチャートでは「変数に値を代入する」などといった細かいことは表現しません。
データの型の違いや配列の添え字処理などは、実際にプログラミングしてみないと感覚がつかめません。
プログラミングの実践的な能力までテストしようとすれば、フローチャートでは不十分。
大学入試センターは、きっとそのように判断したのでしょう。
というワケで、フローチャートで論理的にプログラムの流れを書けるだけでは不十分です。
何か好きなプログラミング言語を1つ決めて、普段から少しずつプログラミングに慣れていく必要があるでしょう。
勉強の中に、情報処理やシミュレーションをコンピューターで日常的に行う習慣を組み込んでいく必要があります。
Python がおすすめ
それでは何のプログラミング言語がオススメ?
という話になると思いますが、私は pythonをおススメします。
次のようなメリットがありますから、初学者にはやっぱり Python です。
- 無料かつパソコンならほぼ全て動かせる
- 情報1の教科書で学ぶ内容に合っている
- 文法が簡潔(文末の;やブロックの()や{}が不要など)
- データ形式や記載法が近代的
- 統計やデータ解析の機能が豊富
- 初心者向けの参考書が多い
- ネット上ですぐに調べられる
確かに、プロのプログラミングの世界では、日本ではまだまだ Pythonはマイナーです。
一方で大学の研究室では Python が文系理系を問わず多く使われています。
なお、日本のプロがPythonをそれほど使わないのは、日本の産業が「ハードウェア中心」「ものづくり中心」だからです。
あるいは日本では英語が読めないプログラマーや数学ができないプログラマーが多いため、海外の最先端に比べると技術が古かったり偏ったりしています。
ものづくり系ではC言語が主流で、Web開発系ではPHP、ゲーム開発ではC#やJavaという感じですね。
しかし今後はPythonや他の言語を使う人口が増えてくると思います。
どちらにしても、1つのプログラミング言語を通じてプログラミングのエッセンスを学ぶなら、文法の細かいことは少ない方が良いです。
特にこだわりが無ければ Pythonで学びましょう。
数学の「統計」を知っていることが大前提
プログラミング言語の話に偏ってしまいました。
ここで決して忘れてはならない大前提を書いておきます。
それは、あらゆる学年で学んできた「統計」の知識が前提だということです。
具体的には以下の数学が問題文中にバンバン出て来ます。
- 小5の「円グラフ」「棒グラフ」
- 小6の「合計」「平均」「中央値」「最頻値」「範囲」「階級」「度数分布表」「度数折れ線」
- 中1の「相対度数」「累積度数」(パレート図)
- 中2の「四分位範囲」「箱ひげ図」
- 中3の「標本調査」
- 数学1の「分散」「標準偏差」「散布図」「相関係数」「仮説検定の初歩」
- 数学Aの「場合の数」「事象の確率」「期待値」「独立な試行の確率」「条件付き確率」
- 数学Bの「数列」「ベクトル」「確率変数」「確率分布」「二項分布と正規分布」「区間推定」「仮説検定」
あくまでも「情報」の試験であるため、数学Bの知識をどこまで使うかは微妙です。
あまり数学を高度にしてしまうと、数学Bとの試験の区別が無くなります。
数学Bとのすみ分けは考慮されるだろうと思います。
教育改革で継続的に強化されてきた数学の分野が「統計」です。
英語の4技能と並んで、数学の統計も強化しています。
プログラミングは「人間の考え」を「コンピューターが分かる言い方」に翻訳していく作業と言えます。
とはいえ、翻訳できるのは、人間の考えのうちのほんの1部。
人間が「厳密に論理的に考えている部分」だけになります。
そして、人間が論理的に考えていることを超厳密に表現できるのが「数学」です。
コンピューターと数学が切っても切り離せないのはそのためです。
さらに物理シミュレーションのように、テーマによっては他の数学や物理の公式も使うことがあります。
入試問題用の「方言」が生まれる危険性
サンプル問題に載っているプログラムを見て感じた違和感が1つあります。
色々なプログラミング言語を経験して来た人ならすぐ分かることです。
それは、中途半端なプログラムだということです。つまり、
「手続き型プログラミング」
をしているようで、実は、
「オブジェクト指向プログラミング」
を暗黙のうちに前提にしています。
どっちかにしろよ!
などと突っ込みたくなる中途半端なプログラミングなのです。
変数名がローマ字というセンスも古臭いですね。今どきは英語です。
ちなみに最近のプログラミング言語は、変数名を日本語にしてもOKです。
日本語にするか英語にするか、どっちかにしろよ!
などなど突っ込みたくなります。
とにかく、技術的にも文化的にも変な問題文になっています。
受験者にとって不幸なのは、
入試対策としてプログラミングの「方言」を入試用に学ぶ必要が出てくるかも?
という懸念です。
今回のサンプル問題の出し方は、フローチャートよりも実践的な能力を試すための苦肉の策だったと言えます。
とはいえ、その策が「共通テスト用の方言」を生んでしまうのは良くありません。
特定のプログラミング言語に依存しないようなプログラムの見せ方
をどのように表現するのか。
これが、大学入試センターにとって大きな大きな課題でしょう。
考えられる1つの案としては、フローチャートとのハイブリッド的な記載でしょうね。
マイクラミングのプロコースはPython
最後は宣伝です。
ヒーローズ植田一本松校では、プログラミング教室「マイクラミング」を開講しています。
プログラミングの根本的な考え方から超丁寧に学びます。
ジュニア~ハイコースは、主に義務教育に対応しています。プログラミング言語はScratch(スクラッチ)です。
プロコースは、高等教育に対応しています。ハイコース卒業生か、それと同等以上の生徒が対象です。Pythonを使います。
日本では、Pythonを使うプログラミング教室の多くが、WebサーバーやWebアプリの開発を学ぶ社会人向けです。
中には大学数学を持ち込んで人工知能の開発へジャンプしてしまうコースもあります。
中学生や高校生に合ったコースを見つけるのは、なかなか大変です。
中学や高校で習う数学の知識を活用しるようなコースともなれば、さらに見つけるのが大変になります。
自分の息子にやらせたいと思えるプログラミング教室が無い!
そう考えて開発したのがマイクラミングでした。
私が塾の先生として、息子にやらせるものとして、独自に開発しました。
プログラミングの考え方や本質を学べるように、ちゃんと学校で学んだことを活用するように、念入りに開発しました。
その考え方に共感してくれる教室が、だんだん増えてきました。
北海道から九州まで。
こだわりの内容です!
手前味噌で恐縮ですが、自信をもってお勧めしますよ!
お問い合わせ、お待ちしております!!
進学実績
卒塾生(進路が確定するまで在籍していた生徒)が入学した学校の一覧です。
ちなみに合格実績だけであれば更に多岐・多数にわたりますが、当塾の理念に反するので生徒が入学しなかった学校名は公開しておりません。
国公立大学
名古屋大学、千葉大学、滋賀大学、愛知県立大学、鹿児島大学
私立大学
中央大学、南山大学、名城大学、中京大学、中部大学、愛知淑徳大学、椙山女学園大学、愛知大学、愛知学院大学、愛知東邦大学、同朋大学、帝京大学、藤田保健衛生大学、日本福祉大学
公立高校
菊里高校、名東高校、昭和高校、松陰高校、天白高校、名古屋西高校、熱田高校、緑高校、日進西高校、豊明高校、東郷高校、山田高校、鳴海高校、三好高校、惟信高校、日進高校、守山高校、愛知総合工科高校、愛知商業高校、名古屋商業高校、若宮商業高校、名古屋市工芸高校、桜台高校、名南工業高校
私立高校
中京大中京高校、愛工大名電高校、星城高校、東邦高校、桜花学園高校、東海学園高校、名経高蔵高校、栄徳高校、名古屋女子高校、中部第一高校、名古屋大谷高校、至学館高校、聖カピタニオ高校、享栄高校、菊華高校、黎明高校、愛知みずほ高校、豊田大谷高校、杜若高校、大同高校、愛産大工業高校、愛知工業高校、名古屋工業高校、黎明高校、岡崎城西高校、大垣日大高校
(番外編)学年1位または成績優秀者を輩出した高校
天白高校、日進西高校、愛工大名電高校、名古屋大谷高校
※ 成績優秀者・・・成績が学年トップクラスで、なおかつ卒業生代表などに選ばれた生徒
生徒・保護者様のお友達登録はこちら
LINE登録するとプレゼントがもらえます!
【会員限定】お子様の成績と可能性を伸ばす18個のノウハウ
塾関係者様のお友達登録はこちら
LINE登録するとプレゼントがもらえます!
「zoomで簡単。オンライン授業移行の教科書」
または個別対談も可
名古屋市天白区の植田で塾を探すなら個別指導のヒーローズ!!
★ 直接のお問い合わせ ★
――――――――――――――――――――――
個別指導ヒーローズ 植田一本松校
〒468-0009
名古屋市天白区元植田1-202 金光ビル2F
TEL:052-893-9759
教室の様子(360度カメラ) http://urx.blue/HCgL