子供にプログラミングを教えたいときは、まずプログラムの思考方法を理解させるのがいいようだ。身をもって体験することで、コードによって何がどうなるのか、その概念を知ることができる。それによって、身の回りのデバイスやシステムが、プログラム化されたビヘイビアによって動いていることがわかってくる。
使うもの:
人
紙
鉛筆
動き回れる場所。タイル貼りの部屋なら、移動距離がわかりやすいので好都合。
工具:
なし
概念:
プログラミング
通信システム
繰り返し、またはデザインプロセス
所要時間:
説明と実践で20分はかかる。その後は、特定の言語の概念を説明するときなどに、これをお楽しみの時間として採り入れるとよいだろう。
主目的:
まずはごく簡単なプログラム言語の作り方を習得し、他の人に単純な作業の命令を出すことができるようになること。そして、生活のどこにプログラムが使われているかが説明できるようになること。
方法:
受講者を2つまたは3つのグループに分ける。人数が多いとやりにくい。
各グループに紙を1枚と鉛筆を1本渡す。
各グループに、単純な命令のコードを作らせる。
できた命令を紙に書かせ、プログラムされる人に口頭で伝えさせる。
プログラムされる人は、紙を見てはいけない。命令は耳で聞くだけにする。または、1行ずつ紙片に書いて渡す。
プログラムされる人は、与えられた命令を、できるだけ正確に実行する。
受講者は反復型開発法を用いて、プログラムを洗練させていく。テストを繰り返すことで、コミュニケーションやコードの書き方の曖昧さが修正され、思い通りに作業が実行されるようになる。
各グループは、完成したプログラムを他のグループの前で披露する。
グループごとに順番に、命令を読み上げ、プログラムされる人はそれに従って動く。
これを通して、受講者は、日常生活において、数多くの物やシステムがプログラム技術によって動いていることを知る。
複雑にしない
コードは1行に1コマンドで、5行以上とする。
“and” と “next” と “then” は命令が複雑になるので使わない。
次の行は、かならず前の行の “next” または “then” として実行されることを約束しておく。
不可能な命令は出さない
その場で実行できない命令はしない。
時間に制限があるなら、何十回、何百回と繰り返す行動はさせないことだ。
空間的制限があるときは、「20秒走れ」とか「2メートルジャンプせよ」などといった命令は出さないようにする。
常識的に考えれば、「1メートルジャンプせよ」とか「テーブルを持ち上げろ」などといった命令は出すべきでない。
拡張案
共通の文法を作っておくと、コードに一貫性が出る。
命令を伝える1人の人間によって、全受講者がプログラムされる人として動けるような目的をグループに持たせる。
実際にこれを行ったときは、ぜひ、写真やビデオを見せてほしい。ProgramAPersonとタグを付けてMAKE Flickr poolにアップしてね。
– Chris Connors
[原文]