Do teachers understand coding enough to answer basic questions like that? I'm curious about whether they do.
When you have to correct their code you know their ability.
It wasn’t that hard to learn enough and, given I was cracking writing crack-intros, it has helped me hugely in the modern world. As an example, threading is child’s play because I did VBL interrupts.
However, the institutions today naturally teach something more relevant to getting a job as they did in my day (68k, Turbo Pascal and some C).
I've also had occasional success first convincing them they know how to add "mindlessly", by just manipulating symbols, and then explaining that we can have machines do it mindlessly, too. I don't use those words, ofc.
For example, you might ask them "Imagine you had a younger sibling who couldn't add. Maybe they didn't even know what numbers were. Could you teach them how to add by just telling them what symbols to write down as they looked through the symbols in the addition problem? Maybe there's an index card labeled '6+3' and on it is written '9'. You tell them to look for the correct index card and write down the corresponding symbol."
You can also explain binary to any interested student who is 13+ and then the idea that a machine can do it becomes a lot easier.
This video of Richard Feynman explaining how computers works is very good: https://www.youtube.com/watch?v=EKWGGDXe5MA
He uses a metaphor I've gotten a lot of mileage out of. Imagine you have a clerk who can add and multiply like a regular person. Now imagine there's someone else who knows only how to add and count, but have no idea what multiplication is.
If they can add and count fast enough, it'll look to an outsider like they not only know what multiplication is, but they can do any multiplication problem almost instantly.
Computers are like that: dumb but fast.
If they do something fast enough they give the illusion of "understanding", kind of like movies give the illusion of motion by swapping out still images fast enough.
Because most people are completely illiterate with respect to mathematics. I wouldn't hold high hopes on their ... whatever the opposite of "functional illiteracy" is.
One idea in case you talk to that "17 yo" again. Ask her to ask her classmates to compute "{{2} over {3}} over {4} + {5} over {{6} over {7}} = ?", here's a visual view of this operation with fractions: https://imgur.com/IqhEsmX
I bet the discombobulated by "z = x + y" also get flabbergasted by fractions. If so, it's not they have trouble learning programming. They have trouble learning anything, q.e.d.
Maybe, but...
>>The student then told me that some of the other students eventually understood that z takes the value of 11 but their question was "how a machine can do that"
... it's possible their block wasn't math, but they were hung up on the fact that they didn't think a *computer" could do math like that.
> They have trouble learning anything, q.e.d.
I doubt that. There are probably a dozen other more plausible reasons.
If those sorts of people exist then they’d be totally blown away at the capabilities of a pocket calculator.
"... they didn't think a *computer" could do math like that."
Emphasis on "like that" meaning laid out like that. Context can affect people's reasoning. Maybe they've never seen code.
Thanks for sharing the anecdote though. :)
- How does the computer understand that it needs to add
- How can the computer go from these 3 lines of text to "sure, let's add"
- Why does text even mean anything to the computer
- For that matter, sure it can add, but HOW? It's not like it has a pencil and paper.
Because indeed the infrastructure between these 3 lines of text and the addition is not trivial. These are legitimate questions.
sheesh
I can not imagine that schooling has gone so far backwards with so many advances, or at the least I really hope that it has not. I was not even in advanced math courses and was/am average at best when it comes to math and would have thought the confusion would happen when getting to something like:
x = "hello"
y = "world!"
z = x + " " + y
where it stops looking like something your entry level high school math class has you doing 30 odd problems a day on.What would happen if you take away the computer and speak strictly in the language of arithmetic? It seems they would have no trouble given the the eventual answer of 11. Perhaps they need to hear that that the computer can automate these operations, how it happens under the hood is a separate question that can be addressed separately. It is a valid question, of course, and perhaps its a sign of fascination. That would be good, but needs to be tempered by patience.
Tangentially, but not so much: I was talking with a 17 yo last weekend. She teached Python herself a couple of years ago and they are teaching it now in her class. She can't understand how her classmates can have difficulties understanding
I asked the value of z to a 30 yo that was listening to the conversation and he first answered 5 + 6, then looked at us, thought again and said 11.The student then told me that some of the other students eventually understood that z takes the value of 11 but their question was "how a machine can do that" and nobody answered to them. I wonder if a little of assembler on a toy CPU could be a better starting point. For example this Machine Code for Kids card game [1] They are selling the cards from the home page of the site (I'm not affiliated with them, I just bought a few decks.)
Or a two bits binary adder with logic gates.
[1] https://punkx.org/4917/guide.html