プログラミング学習が困難な理由を数学の問題の作り方から考えてみた
大学入試などで、数学の問題がでて、大問が1つに対して、小問が3つあるとき、
1.◯◯を求めよ
2.△△を求めよ
3.□□を証明せよ
という問題があるとき、だいたいは、◯◯と△△を使えば、□□が証明できる。
この証明問題、1と2をうまく使えば、平易な問題であるとする。
この問題を難しくしたい場合、いきなり、□□を証明せよという問題を出す。
そうすると、途端に難しい問題に様変わりする。
そもそも、◯◯とか△△を求めれば、□□の証明につながるという仮説を自分で道筋を立てなければいけない。
大体、数学の問題で、難しい問題って、1行から2行の問題だったりします。
逆に長い問題や小問に別れていると、ヒントがたくさんあるので、解きやすくなります。
本題で、今、自分自身が再度プログラミングを徹底的に勉強し直しています。
プログラミングの学習を考えた時、ちょっと、文法を学んで、いきなり、□□を証明せよという問題が課せられているような事が多いなと。
当然、数学教育は歴史があるので、カリキュラムや問題を作る過程も洗練されていると思っていますが、プログラミングって、プログラミング”教育”に限ってみると歴史が浅いのと、プログラミングと教育両方できる人が少ないからか、学習をする過程で、うまく体系だてられてないから、より難しく感じるのかなと。
プログラミングでいうと、文法をちょこちょこ教えたら、いきなり、◯◯を作れ!!とか出されるケースも多いので。
あとは、1学んだら1に関する問題を、2学んだら、1を復習しつつ、2が学べる。そんなカリキュラムや問題を作っていけば、もう少しドロップアウトする人が減るのではないかという感じがしています。