情報の科学・人力ソート

プリントを並べ替えながらふと考えました。
「人力ソート」生徒たちにやらせてないなあ、と。

プリントの並べ替えはさておき、ランダムなトランプの並べ替えを人力ソートで扱ったら面白いのでは?

1.ランダムなトランプをソートしよう
2.作業量をもとに、どのソートが一番早いか仮説を立てよう
3.実際にやってみよう(タイムを計る)
4.結果を考察してみよう

なんかで、割と簡単で楽しくできるのでは・・・?

※コンピュータ上で行う場合と人間が行う場合の違いに着目できると最高なのでは?


ググってみたら、既に似たような記事がありました…
そりゃあ、あるよね。ええでもこれ、やっぱり楽しそう。どこかでやれないかなあ。

参考URL:https://techlog.voyagegroup.com/entry/2015/08/17/182516
本当に実用的なたったひとつのソートアルゴリズム

Arduino LCDメモ

1602A I2C アダプターの利用
https://iot.keicode.com/arduino/arduino-lcd-i2c.php

ArduinoでI2Cを使って格安LCDの1602に文字を表示させよう!
https://iot.keicode.com/arduino/arduino-lcd-i2c.php

授業検討会(?)を開催してみる。

ご無沙汰しております。生きております。
全く更新が。はかどっておりませんが。生きております。
時間のあるときまったり更新すればいいやと半ば投げています。

さておき。

正規の集まりではないのですが、講師や若手の先生方に声をかけて、
授業の検討会(?)を行うことになりました。


【内容】
3月21日(祝日)に集まれそうな人で
ゆるーく情報の授業検討会(?)をやろうと思っています。
※どこまで声をかけるかは未定です。
※ある講師の先生に、「情報の授業は何をすればよいかわからない」と聞かれたのが発端です

【検討(?)事項】
1.この範囲はこんな指導をした(したい)
2.この範囲の狙いは何か
3.場合によってはasami(仮)が模擬授業を行い、突っ込みや検討
4.もちろん他の先生に授業をして頂くのも大歓迎

また、以下の2点をお伝えした上でご参加頂こうと思います。
(ア)正規の研修会ではないので、交通費などが出せません。
(イ)参加不参加が何らかに影響することもありません。

場所:千葉県立○○○高等学校 PC教室
日時:3月21日(木) 0900~1200(予定)


とまあ、こんな感じで。

実はまだ2人くらいしか参加者を募っていないのですが、まあ緩ーく適当にまずはやってみようかと。
ご報告できる事があれば、またいずれご報告したいと思います。

「じゃんけんアルゴリズム」で考える

情報の科学では、プログラミングの範囲でまとめに入ろうとしています。
授業を終え次第、一気に更新をかけていきたいなあと思いつつ、ふと浮かんだ悩みを記録しておきます。
まとまっていないまま吐き出すので、読みにくいのは、ご愛敬。


じゃんけんアルゴリズムを題材に、プログラミングについて一歩踏み込んでみたいと思います。(予定)
//じゃんけんアルゴリズムはこちらを参照 https://staku.designbits.jp/check-janken/

要は、プログラムで「じゃんけんゲーム」を作るときの判定部分を、IF文あたりを使って書くわけですが、
特に何も考えずに書く場合は大抵以下のようになるかと思います。

//適当コーディングです。読み替えてください。むしろ読み飛ばしてください。

   if (自分 = グー) {
      if (相手 = グー) {
         引き分け;
      } else if (相手 = チョキ) {
         勝ち;
      } else {
         引き分け;
      }
   } else if (自分 チョキ) {
      if (相手 = グー) {
         引き分け;
      } else if (相手 = チョキ) {
         負け;
      } else {
         勝ち;
      }
   } else {
      if (相手 = グー) {
         勝ち;
      } else if (相手 = チョキ) {
         引き分け;
      } else {
         負け;
      }
   }
}

で、入れ子部分のアルゴリズムを工夫するとこうなる。

kekka = (jibun-aite+3)%3;

if(kekka==0){
   alert(“あいこ”);
}else if (kekka==1){
   alert(“負け”);
}else{
   alert(“勝ち”);
}


もうちょっとわかりやすくしましょう。
私も「このコード天才かよ!」と楽しんだ記憶があります。
それがこれ。

n=1-n;

これは、「0なら1を、1なら0を返す」というNOTを書いた物です。
それまでは、

if(n=1){
   return 0;
}else{
   return 1;
}

とかまあ、こんな感じで書いているわけです。


さてここからが本題
これらのプログラムは、はたして「良いコード」でしょうか?
様々なケースで考えさせたいと思っています。

効率的、短い、カッコイイ、そんなコード「n=1-n;」はリーダブルコードなの?
じゃんけんゲームを作るとして、「良いコード」って何だろう?

今回はプログラミングを指導するのであれば、その「考え方」にフォーカスを当てるべきだろうという考えの垂れ流しです。
まとまり次第、結果を報告したいと思います。

神奈川県の実践事例報告会に参加しています

神奈川県情報部会実践事例報告会に参加しています。(NOW)

しかし、神奈川県の情報教育への取り組みは本当にうらやましいです。(東京もすごいですけども)
千葉県も負けないように盛り上げなくては。

ちなみに、神奈川県の情報部会のWebサイトのURLが
http://www.johobukai.net/ です。 johobukai.net です。

oh…

本日の内容がまとまり次第、レポートしておきたいと思います。
http://www.johobukai.net/18jireihoukokukaisidai.html

memo:投稿したいネタ

micro:bit
情報テクノロジーから見えた未来
情報Ⅰについて
情報Ⅱについて
情報デザインの今後

中学校学習指導要領解説 技術・家庭編
教科書

小学校のプログラミングについては、自分の中ではもう一段落も二段落もついている。
ただ、どうしても文科省の意図している内容と現場での解釈には若干の相違があって。
「学習指導要領を読むこと」って本当に大切なんだなと。

#memo !

プロでありたい

悔しくて眠れず二度目の更新。

前回の記事の通り、情報教育の質問に対して答えられなかったという事が悔しくて悔しくて。

なんでこんなに悔しいのか考えました。

ここで言うのもなんですが、私は「プロ」になりたいようです。
と言っても、生徒たちから見て、聞けば何でも答えてくれる、プロフェッショナルになりたいと言う事ですが。

要は、何を聞かれても、すぐに答えられる人でありたいと。それが情報に少しでも関わるなら、どんな内容でも、です。

私の目指す「理想の教員」が、きっとそんな姿なんですね。

少し近づけているのかな、と思いきやまたすぐ離れてしまう理想像。

あー悔しい。

次は絶対に間違えない。

情報活用能力について

ちゃうねん。
本日、「情報教育の最新事情研修」で「情報活用能力って何ですか?」って聞かれて答えられなかったんです。
ええ恥ずかしい。

言い訳したい!

従来の情報活用能力って以下の3観点に8要素が付いたもの。
・情報活用の実践力
・情報の科学的な理解
・情報社会に参画する態度

本当にすみませんでした・・・。

でも、でもね!
これってそもそも「本当の意味での情報活用能力とは」とか言われるレベルの物で・・・
いや間違っちゃいないと思ってますけど!情報ABCの頃の話じゃない・・・?
そもそもこれ、次の指導要領で消されますよね!

現行の指導要領には乗ってる訳ですが。

「情報教育の最新事情研修」で、 旧体制聞かれてるだなんて思わないよ!
いやいいわけだけど!マジで! え? 育成すべき資質・能力の三つの柱の話? え? でも違くね?
~以下混乱~

あああああああああ悔しい。
夏休みで鈍っていた頭が覚醒した気分でした・・・

小学校でのプログラミング指導(先生宛)

移動中に、ちょっと自分用で覚え書き。
今度、小学校の先生にプログラミング教育をする理由とか
その方法とか、そんな話をしなくてはなりません。
ので、ざっと書き起こし。
自分用だから口調も何も出来てないです。記録用ってだけです!
内容さえあっていればいいんです。出来とか気にしないでね。


今後間違いなく、全ての人間は機械の恩恵を受けることになる。
(少なくとも日本人はって思ってもいいですよ。)
ほら、IoTって聞きません?

例えば私の家は、自動カーテン開け閉めのMooninって機械使ってます。
ちなみに買うと、7000円位した気がします。
これ、自分で作ればきっと,
部品の品質にもよりますが1000円~3000円位で作れます。
多分うちの生徒なら1時間でつくれるんじゃないかな?
似たようなもの、すでに授業で沢山作ってます。

所でこのもーにん、仕組みってわかります?
開け閉め で使うモーター制御と
時間を判断する為の、 時間制御ですかね?

でもこれ、きっと時計は入ってないですよ。

きっとこれタイマーです。携帯と接続して、携帯から時間持ってきて、
それから何時間後に閉めて、開けてを繰り返す仕組み。

そっちの方が、安上がりで、省エネで、バッテリー長持ちだから。
用途的には正確さよりも、利便性を取るのが正解だろうと思います。

例えば、SUICA
あれってどんな仕組みですかね?
中にコンピュータが入ってる?

チップがありますね。
チップが値段覚えてる?

違います、チップは自分の名前だけ覚えていて、
それをインターネットでSUICAのサーバーにアクセスして
今自分の名前で、いくらお金を持ってるのか確認している。

そうすれば、難しい仕組みは見えない所(これをクラウドやサーバーという)
で全部できる。自分はただ、名前を言えばいいだけ。単純。

じゃあ、これの電源供給ってどうなってるんだろう?

このシステムを利用して何か便利な物がつくれないかな?
自分はこんなことがしたい、どこまでを自分でやって、どこまでを機械にやらせようかな?
機械にやらせた方が良い事と、人間がやったほうが良い事の違いって何だろう?

そんな判断が出来る、出来ないが今後の生産性や生活レベルに大きくかかわってくるのは間違いない。
それも、10年や20年後ではなく、3年後とかそんな話です。
実は今、皆さんの身の回りでも、知ってる人はやっていて、知らない人は何も知らないなんて事がごくごく普通に起きています。これを情報格差と呼んでいます。

少し話がそれました。
それで、この「仕組み」つまりは「構造」なんですが、
これを理解する力っていうのが今後重要になってくると思うんですね。

これを小学校からきちんと意識させようっていうのが、
プログラミング教育 の大きな部分だと思っています。

何故プログラミングなのか?
それはコンピュータは「構造」を理解した人が、しっかり「命令」しないと
何もできない機械だからです。
「コンピュータを動かす」には、「構造を理解しておく」事が必須となるんですね。
教えるのにとっても都合の良い教材なんですよ。

具体的にお伝えすると、
例えばここに時計がありますね。
これを入手したい時、人間相手ならば「あの時計とって」とお願いすれば入手できます。
けど、これを機械相手にお願いすると、しっかりと厳密に命令しないといけません。
1.~~にある時計を持ってきなさい

もしくは

1.~~に移動します
2.~~に腕を伸ばします
3.手を開きます
4.~~に触れます
5.つかみます
6.手を持ち上げます
7.~~に移動します
8.手を下げます
9.手を開きます

これくらい厳密にいかないといけません。
これがコンピュータであり、プログラミングです。
で、これらの動作っていうのは命令者、つまり人間がしっかり
「問題の構造を理解」しないといけないんですね。

これらを繰り返すことによって、問題の解決手段や、問題の構造理解をする力を身に着ける
これがプログラミング教育です。

※決してコーディングするのがプログラミング教育じゃないよって、書いてあるでしょ?