Hacker News new | past | comments | ask | show | jobs | submit login

6 years old?

This confuses me.

Formal operations typically develop at around age 11 (cf. Piaget); this mental capability is necessary to (among many other things) comprehend abstraction, isomorphism, algebra, recursion, and most of the other mathematics-originated components of computer science. How can children without these capabilities, possibly comprehend programming, to any extent beyond the trivially concrete?




It means you need to keep the learning tangible, tactile, and concrete. Simple robots are great for that. At that age with my kid, we did Logo+Turtle graphics, with a "be the robot" walk-through before coding. Also we got a Pro-Bot from Terrapin Logo, which is again create concrete, observable output from simple programming steps. Somewhere along the line we had a robot that I don't think is made any more, but it had a paper disk with two channels of information for driving the two wheel motors, and you programmed it with a black crayon.

The key is keeping a direct, concrete connection between program and output. Multiple steps of abstract thinking don't work well.


> Somewhere along the line we had a robot that I don't think is made any more, but it had a paper disk with two channels of information for driving the two wheel motors, and you programmed it with a black crayon.

Sounds like one of the old OWI MOVIT robots - they used to sell a version (I think it is discontinued but still available from some vendors) called the "Binary Player Robot Kit". It doesn't look the same as the original version in the 1980s, but the internal circuitry is probably identical.


Oh yeah, Binary Player. It was pretty interesting for how simple it was.


I've noticed this with my kids. You can try to teach something, put a lot of effort into it, make slow and unreliable progress, then back off and then a year later they try again and pick it up instantly because their brain is ready. The key is to provide the opportunity at intervals, and don't push if they aren't ready yet.


> their brain is ready

Without abstraction/generalization capability, how are they able to learn the entirety of the concept rather than merely analyze your concrete examples?


Algebra can be taught to young children by making it concrete. Call the variable boxes, and give them actual boxes to represent them. Color code the units, and don't allow them to mix colors. Tell them to play fair: "You may only give something to the right side, if you also give the same thing to the left side. Same goes for taking things away, or splitting into shares, or asking the teacher for a copies of one of those boxes. Yes, you can do that, just share it fairly between the two sides of the play area." Kids get the rules of fairness really quickly, and those rules map closely to the basics of algebra.

I was part of a study where this was attempted, at about age 8 or 9. IIRC, it worked well for about half of us. The teacher totally blew my mind when she took all of my boxes and tokens, put them in her larger pencil container, and told me that my game was now just a piece in a bigger game.


Surely you could say the same about teaching six year olds anything beyond reading, writing and basic maths.

At that age, you're not teaching them (programming) concepts, you're stoking their curiosity


Then why give a taste of "programming" and not, say, electronics? That would support the (superior) bottom-up direction of CS pedagogy far better.


Por que no los dos?


Time limitations.

With current US primary+secondary curricula, most non-remedial students still only get as far as differential calculus before graduating high school - electronics and discrete math are already missing from that, and "concrete programming demonstrations" would strain the schedule even more.


Sorry I thought there locus was education in general not specific curricula.


Right; but implementing any sort of change to education in general, requires that specific curricula be changed.


I feel like at 6 years old you understand enough to describe state machines.

I did this when I was 6 with the older lego RCX brick. I didn't understand the limitations of the graphical programming language at the time because nothing I thought of was complex enough to push them. It still probably helped me understand intuitively how "dumb" computers are which can be pretty hard for beginner programmers to grasp for some reason.


> It still probably helped me understand intuitively how "dumb" computers are which can be pretty hard for beginner programmers to grasp for some reason

Grasping the dumbness of computers can also be done via a bottom-up approach: transistors, then gates, then boolean-logic/state-machines, then binary-numbers/ALUs, then processors, and so on. "You think it can do X? Then show me how that could be built, using what you've learned so far!"

(Analogous, of course, is learning mathematics starting with a 3-column-proof-based approach, rather than ... err, whatever they call the typical American approach.)


What's wrong with teaching them the trivially concrete? It's just the beginning of a journey that can progress as they get older.


Just off the top of my head, there's the 5-year gap between age 6 and age 11, during which this journey does not progress and the memories from age 6 can degrade.


Well, there are plenty of example of kids who do learn programming at that age, so I guess your ideas must be incorrect.

Personally, my parents got me a Commodore 64 when I was 6, it happened to come with a copy of 'An Introduction to Basic Part 1', and I successfully worked through it.


You mean Piaget's ideas?




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: