3 ms·
You're absolutely right. It's basically lies to children (https://en.wikipedia.org/wiki/Lie-to-children https://en.wikipedia.org/wiki/Lie-to-children) Their me
by MarcScott 7y ago
You're absolutely right. It's basically lies to children (https://en.wikipedia.org/wiki/Lie-to-children https://en.wikipedia.org/wiki/Lie-to-children)
Their mental models aren't sufficiently complex enough to truly understand the truth, so don't bother peeling away the layers of abstraction, just teach them what they need to know to be successful. Eventually, as they advance, they'll gain a more complex understanding, and get closer to the truth.
When teaching physical computing I use a python library called gpiozero (https://gpiozero.readthedocs.io/en/stable/ https://gpiozero.readthedocs.io/en/stable/). This lets kids write code such as:
from gpiozero import LED
red = LED(17)
red.on()
to light an LED. They don't need to know that the led class is inherited from a generic output device. They don't need to know that the `on` method means the gpio pin they are using is `high` or that it's outputting around 3.3V. They just need to know that when they run the code, the LED turns on.
When/if they go on to learn more, the layers of abstraction can be removed and they can learn more about what is going on under the hood.
- throwawayjava 7y agoI've always felt US mathematics education is a case study in what happens when "lies for children" goes terribly wrong because the teachers never actually encounter a version of the field that isn't a lie. My experience volunteering in an AP CS class makes me wonder if something similar is happening in K12 CS at the moment. The students knew by heart the JavaDoc for String.format but struggled with loops. The teacher also struggled with simple nested for loops. Kind of made me want to throw away the damn laptops and just spend some time solving problems on pencil and paper...