Comment Re:small asm, C, C++, python - in that order. (Score 1) 799
I would suggest against ASM as a first step. Kids of the last two decades (myself included) have grown up around computers, they're already thinking several levels abstracted from the bare metal, and when they think 'programming computers' they probably want to see problems and results at their current level of abstraction and understanding, and gain knowledge they can use.
When a person mostly understands their current "layer" is when they should move up or down in abstraction. Given a one-on-one scenario, I suggest asking about their interests and find out where they are the most knowledgable, then use that as a starting point.
Teaching them about registers and opcodes will probably not integrate with any of their current knowledge. Much like in school, I disliked math, not because it was hard, but because teachers could rarely relate it the my world or current knowledge. Basic mental methaphors. We're not building a house, we're building a network of information. Foundations matter, but they're not always the starting point.
When a person mostly understands their current "layer" is when they should move up or down in abstraction. Given a one-on-one scenario, I suggest asking about their interests and find out where they are the most knowledgable, then use that as a starting point.
Teaching them about registers and opcodes will probably not integrate with any of their current knowledge. Much like in school, I disliked math, not because it was hard, but because teachers could rarely relate it the my world or current knowledge. Basic mental methaphors. We're not building a house, we're building a network of information. Foundations matter, but they're not always the starting point.