2020年6月30日火曜日

情報Ⅰ情報Ⅱについて軽く気持ちをまとめた

情報Ⅱの学習内容がついに公開され、政府の想定するプログラミング教育の指針が出揃いました。 そろそろきちんと理解しようと思ったので、理解のメモを残しておきます。

小学校

まずは小中学校はコードを書くことは求められていません。 つまりビジュアルプログラミングでも良く、楽しむ内容になっています。 高校からはコードを書いて行きますが、ビジュアルプログラミングに十分慣れていれば、高校の情報Ⅰは楽勝と感じるだろうと思います。 ただ選択科目の情報Ⅱはきちんとしたステップで学んでないと、少し危ないかな。

小学校では課外活動で「多角形を描く」「動かしてみる」などがお題として与えられていますが、ビジュアルプログラミングをすれば当たり前のようにクリアできます。 進みたい子はガンガン遊びながら進んでいける教育に、ぜひして欲しいものです。

中学校 (技術・家庭科)

中学生では電気や通信、ロボットを利用したプログラミングが推奨されていますが、言語は自由です。 Scratch、JavaScript、ドリトル、色々な事例が挙げられています。 情報Ⅰで外部装置、情報Ⅱでは NN、Webプログラミングに近いことを学ぶので、言語は自由でもそのへんを意識した内容にするのが良いと思います。


高校 - 情報Ⅰ (必修科目)

授業内容を要約すると以下になっています。
  1. ITの教養
  2. ビット列による表現、要件定義(ポンチ絵)
  3. AND/OR、四則演算、外部装置、プログラミング基礎
  4. ネットワーク・プロトコル、データ表現 (CSV, XML)
一昔前の子たちが大学1年生で習っていた内容を学びます。 ポンチ絵は必ず学ぶようですが、コードは書かないみたい。 3章の四則演算あたりからプログラミングを学ぶ。まあ王道とは思います。 外部装置として micro:bit を例に挙げて LED を光らせたりするのは、直感的で良いと思います。 if/else、配列、乱数、線形探索、二分探索、ソートを学び、簡単な関数の視覚化とシミュレーションもします。

4章は座学と Excel などを使ったデータの視覚化がメインの内容に見えますが、唐突にテキストマイニングが出てくるのはちょっと焦ります。 まあ、そういう技術もあるんだよ、くらいの感じでしょうか。 情報Ⅰの授業はほとんどが王道なので特に気になることはありません。 一番気になるのは情報Ⅱとの整合性です。 情報Ⅱを履修するには、四則演算などの初歩の初歩の知識だけでは不足するので、そこをどうするか。 データ表現を学ぶ時に HTML を軽く書けるようになっておいたほうが良いんじゃないかなあ。


高校 - 情報Ⅱ (選択科目)

学習活動を見ていると、情報Ⅱはコードが書けるのは当然の設計になっています。 その一方で極力書かせたくないという気持ちは凄く感じます。

パッと見では Python/R で分析、テストするために何かの言語は書ける必要があるようには見えます。 ただその先がわかりにくい。 2章ではシステムを作る方法がプロトタイプ作成ツールという言葉で書かれていて HTML/CSS などに限定したくない空気を感じる。 とは言え「プロトタイプ作成ツールでモックを作ろう」や「Webサイトに反映させる」とも書いてあり、作りはするようで、どうすんだこれ。 4章で GET/POST の例が挙がっているため、おそらく静的サイトを作ってみるで止まると思う。 ただ HTML/CSS はどこで学ぶんだ?

No code で作ることを意図してるなら、No code でできるよねという層と、そうじゃない事を知ってる層で、超えられない壁ができるので、そうならないようにしたい。 理解するためには、簡易的なコーディング→ No code が良いと思うな。 私は小さな Web アプリを例にして、HTML/CSS/JavaScript などで実際に動かすのが、一番わかりやすいように見える。 ただどこで学ぶのか問題がある。 情報Ⅱだけで学ぶのは厳しいように見えて、明らかに楽な情報Ⅰで学んで、情報Ⅱで形にするほうが自然なのではないか。

4章では動的サイトに近付いてきます。 GET/POST の説明には、普通は HTTP→Client/Server (なぜその構成か)→ Webサーバ → HTML/CSS/JavaScript (ここで使われる) → GET/POST という進行になるかと思います。 ここまで来るとプロトタイプ作成ツールという言葉ではさすがに扱いきれなくなってきてコードを書いている。 それなら最初からコードを書いたほうが良いような…。 Python で書いているけど、個人的には Node.js のほうがおすすめだなあ。まあ教える上で楽なのは Python だと思う。

授業内容は以下のようになっています。
  1. ITの教養
  2. 要件定義などの設計
  3. 情報とデータサイエンス
    1. 構造化 (JSON など)
    2. データサイエンス (蓄積→クレンジング→重回帰→主成分分析)
    3. 決定木 / NN
  4. 情報システムとプログラミング
    1. Client/Serer
    2. 通信方式の要件定義
    3. モジュール化 / テスト
    4. セキュリティ
  5. いろいろ

もう少し細かく見ると、3.1 は WebAPI を叩いて、データをどこかに保存できれば良いように見えます。 PDF にはエモいキーワードが散りばめられているけど、DB と名前を付けるほどの内容は学びません。

3.2. のデータサイエンスは割と鬼門に見えて、どこまでやる気を出すかが難しいです。 重回帰分析と主成分分析はもとは大学生の範囲だけど、どれだけ簡略化するか、どれだけきちんと説明するかで処置に困りそう。 寄与率でΣが出てくるけど、Σは高校2年なので、真面目に説明し始めるとカリキュラムがキリキリになるかも? そして過学習とか変数選択とか説明し始めたら完全に泥沼にハマって終わりがまったく見えなくなる気がします。

主成分分析にどれくらいやる気を出すべきか私はよくわかりませんが、3.3. の決定木 / NN まで一気に駆け抜けるイメージでやるのが良い感じでしょうか。 3.3. の NN は色々な事例ベースで学べて、かなり良いものになってると思う。 これを高校生のうちに学べるのは、本当に素晴らしいし、まともな教育を受けられなかった身としてはうらやましい。

4章の Client/Server、そしてセキュリティはガチにやるとキリがないけど、触りくらいのものです。 データサイエンスのところがコード寄りなのに対して、システム側はどう教えるのかが曖昧になっている。 最初読んだ時は、NN 周りがよくできていて良いかと思ったけど、システム周りは足並みが揃う気がしないので、大変かもと思い始めました。

情報処理技術者試験みたいな路線になりそうかなあ。そこには少し残念感がある。でも全体的には素晴らしい。

0 件のコメント: