私は現在、小学5年生の子にプログラミングを教えている。開発環境は以下の通り
開発環境
- Windows10 64bit
- Minecraft Java版 ver1.12.10
- Minecraft forge
- RaspberryJamMod
- Python3.8
教えていること
教え子の要望としては、MinecraftのModを自作したいとのことだった。
そのためにはJava言語を学ぶ必要がある。
しかし、小学生が最初に学ぶプログラミング言語としてJavaは非常にハードルが高いと考えられた。
そこで、まずはMinecraftのなにを作っているのかわかりやすい点と、
学習ハードルの比較的低い言語としてPythonを教えることとし、
Minecraft+Pythonのプログラミング環境としてRaspberryJamModを導入して教えることにした。
学習内容は以下の書籍に沿って進めている。
Minecraftで楽しく学べる Pythonプログラミング
学習履歴についてはこちらのWiki等を参考にしてほしい
プログラミング教室wiki
小学生にプログラミングを教えることの難しさ
さて本題だが、小学生にプログラミングを教えることは非常に難しい。というのも
- 最低でも中学数学の知識が必須(代入の概念に近い文字式は中1で学ぶ等)
- ハンズオン形式で行っても一回1時間が限度(子供の集中力はそこまで高くない)
- 一度に多くのことは詰め込めない(少しずつでないと頭がパンクしてしまう)
等の理由からである。
教えている子は日々Minecraftを嗜み、コマンドの知識も豊富でUnityでゲーム作りの経験もある。
しかしながら、これらの前提知識があったとしてプログラミングというものは
非常にハードルが高いことに変わりはない。
ハードルの高さがわかる具体例として、有名なFizzBuzz問題を宿題として出したが
完成まで1週間程度の時間がかかっている。
それでも教えるためにはどうすれば良いか
私は教育の専門家でもなければ、プログラミングの専門家というわけでもない(一応高専卒ではあるが)。
そのため創意工夫の繰り返しでなんとか毎回をやり切っている。工夫としては
- スライド形式でなるべく噛み砕いて紹介する
- 一単元に教えることは一項目のみと極力シンプルにする
- 読むことよりもプログラムを書くことを中心にする
- 授業中に課題を1~2題,1週間かけてやる宿題を1~2題という構成にしている
などが挙げられる。例として講義用に作成したスライドをいくつか挙げておく。
しかしながらこれだけの工夫をしても、不徳の致すところだがについていけないという理由で辞める子も出てしまった。
繰り返すが、それほどプログラミングは難しいのである。
今後どうするべきか
脱落者が出てしまうほど難易度が高いという点を、さらにハードルが下げられるよう
噛み砕いて説明すべきかという課題がある。
しかしながら、スライド作成に数時間を費やしており、本業の片手間で行う手前、
これ以上の負担増は個人的に厳しい。さらに自らの能力不足という点は否めない。
一方、主観ではあるが、現状でのペースに大きな問題はなく、教え子の学業との兼ね合いも考慮して
一時間/週・授業内課題と宿題を数題というスタイルは幅広く適用できる可能性は高いと思われる。
スライドを見たけど、これではハードルはかなり高いのでは?等の意見がありましたらコメントいただければ幸いです。