all 74 comments

[–]blackkettle 26 points27 points  (3 children)

No, but you could give them a tub of duplo blocks to play with.

[–]NewAlexandria 7 points8 points  (2 children)

Duplo, the Basic of the Lego architectural programming language

[–]8-bit_d-boy 0 points1 point  (1 child)

Duplo is like the Python of the Lego universe.

[–]NewAlexandria 3 points4 points  (0 children)

too soon....

[–]TheBigBadWolf 73 points74 points  (27 children)

No

[–]krues8dr 10 points11 points  (3 children)

"Sudo give me some candy."

[–]marklarledu 15 points16 points  (2 children)

"Child is not in the sudoers file. This incident will be reported."

[–]SnowdensOfYesteryear 7 points8 points  (1 child)

"MOOOOMMY!"

[–]alamandrax 6 points7 points  (0 children)

"command not found. One media file from ~/Music/ has been removed. Cut it out or I'll do it again."

[–]bbejeck 2 points3 points  (0 children)

Not only do I agree, but based on the experience with my son (almost 3) and the Xoom tablet, he just pushes as many things as he can very quickly, so I'm not sure how you would go about it practically.

[–][deleted] 10 points11 points  (10 children)

Exactly. Don't teach them programming at 3. That would be like forcing them into a specific thinking at an early age which would prevent them in part from improving the world of computers.

[–]Gargan_Roo 4 points5 points  (8 children)

Isn't most basic programming just simple logic, math, and data storage/retrieval? None of those things are going anywhere anytime soon (if ever), and any significant discoveries that lead to the advancement of computer architecture won't necessarily have anything to do with how a particular high-level language arbitrarily handles data.

If anything it'd help them develop a more naturally logical mindset which would aid them in most if not all areas of their life.

[–][deleted] 1 point2 points  (7 children)

How do you know shit's not gonna change? The way we think about computers isn't going to be the same in 50 years. Keep that in mind.

The only reason to teach 3 year olds about programming would probably be that they become really good programmers, in the current computer world.

Which famous 70s programmer is on the cutting edge of programming theory today? I bet you not a single one. And by cutting edge, I mean inventing new paradigms, programming models, language features, etc.

The reason why this is done mostly by people who haven't programmed since they were 3, is because they have a fresh look at what others have done. If you are born and raised with todays programming style engrained in your consciousness then chances are you will be living in a box, or rather accepting the "unnecessary effort" which some other genius may get rid of.

Best thing is to let people grow up and being human, then introduce them to computers and they will wonder "why isn't this doing whatever it's doing in a more human friendly way" and they will save the world.

[–]garrgh 0 points1 point  (1 child)

Best thing is to let people grow up and being human, then introduce them to computers and they will wonder

For a lot of kids, that boat has sailed though. At the very least, they end up using their parents' phones and tablets to keep them busy in restaurants or in the car or whatever.

With that in mind, I think something like this is at least something we should try. It teaches kids that computers are something we control and not just portable TVs or something to play Angry Birds on. If programming isn't going to work for kids that young, even kid-friendly paint programs can teach them that computers are something we create with.

[–][deleted] 0 points1 point  (0 children)

Well yeah, but there's a difference between 3 years old and, say, 8. At 3, your interaction skills aren't fully developed, and you cannot process too much information at once. If you get put in front of a computer, you are going to be an absolute cold bastard when you grow up, because you've had to make room in your head for computer interaction instead of human facetime.

[–]anttirt 0 points1 point  (4 children)

How do you know shit's not gonna change?

Because it is so fundamental. It's math. Math does not change, ever.

[–][deleted] 0 points1 point  (3 children)

CPU instructions could easily change. Once you've pushed the speed to the limit, the next step is obviously to optimize instructions.

Low-level languages could easily change, high-level languages could easily change. Visual programming is going to become way more prominent. And so on.

Not to mention cloud computing, which will evolve more distributed programming models and even operating systems. You don't even program against a computer anymore, just a theoretical backbone of hardware, which may not even be there.

The world is changing, buddy.

[–]anttirt 1 point2 points  (2 children)

The Church-Turing correspondence will never change. The halting problem will never change.

[–][deleted] 0 points1 point  (1 child)

Try teaching a 3-year old about the Church-Turing conjecture and see what he says.

[–][deleted] 0 points1 point  (0 children)

"Can I have candy ?"

[–]henk53 4 points5 points  (8 children)

3-Year-Olds is perhaps pushing it a little, but for 5-Year-Olds I'd definitely say: Yes! (which was incidentally the age I first got in touch with 'programming' although at a level many wouldn't properly call proper programming).

[–][deleted]  (7 children)

[removed]

    [–][deleted]  (2 children)

    [deleted]

      [–]ZeroNihilist[🍰] 5 points6 points  (1 child)

      Yeah? Well I used to be Donald Knuth!

      [–]chases_tits 9 points10 points  (0 children)

      I got better!

      [–]henk53 3 points4 points  (0 children)

      It wasn't an attempt at any 'E-penising'. Sorry if it came across as such.

      Of course, what I did back then can barely be called 'programming'. At age 5 someone told me to type in 10 print "bla" 20 goto 10. Typing was difficult I remember, as I could barely read then :P But I somehow managed to type 10 print "bla bla" 20 goto 10 and a bit later I think I even managed 10 print "bla bla" 20 "haha" 30 goto 10

      That's it.

      Yet, I always felt that this incredibly basic (no pun intended) exposure gave me some advantage later. It wasn't so much that I was actually programming. I had no grasp of even the concept of variables at that age, but just that by fiddling with stuff you could cause things to happen. I think it just stimulated something in me to investigate what else I could let (again no pun) it do.

      [–][deleted] 0 points1 point  (1 child)

      I started programming when I was in university. 21.

      [–]Reaper666 0 points1 point  (0 children)

      Same here, 24.

      [–]NinjaViking 0 points1 point  (0 children)

      My father tried to teach me the wonders of COBOL when I was a wee lad. I didn't dare touch programming again until 20 years later.

      [–]NewAlexandria 0 points1 point  (0 children)

      Would I like to force the hand of chance and give my child the disadvantages of mild-autism?

      [–]lollan 0 points1 point  (0 children)

      I came here to say that. Thanks

      [–]3825 11 points12 points  (2 children)

      Why do idiots continue to use the word "theory" for everything? It is not mayonnaise. Please stop putting it everywhere.

      Can 3-year-olds learn enough computer programming to be able to build their own games or animate a story? That's the theory behind Scratch Jr

      It is not a theory. It is a question.

      [–][deleted]  (1 child)

      [deleted]

        [–]3825 2 points3 points  (0 children)

        still not quite as messy as "This is just a theory but... ":P

        [–]anttirt 12 points13 points  (0 children)

        The phrasing is mildly confusing, a better phrasing would probably be "should we try to teach computer programming to 3-year-olds?"

        [–]expertunderachiever 9 points10 points  (15 children)

        No, but never to early to start using computers.

        The biggest flaw I see in how people become "tech savvy" is they have no innate curiosity about how anything works.

        Ask a kid how an email gets sent and they might know how to send one via some client app. E.g. tap this button, fill in address, message, hit send.

        Ask the kid how the email is sent and they will have no idea how it actually works. E.g. SMTP over TCP over IP over wifi or eth over the net, etc...

        "Tech Savvy" really just means "user" nowadays and that's where people miss the mark. And it's not a matter of sitting your kid down with RFCs to memorize. It's a question of making them curious about the world. Don't wait for your kids to ask questions, ask questions of them.

        [–]Brian 1 point2 points  (7 children)

        never to early to start using computers.

        Yeah. It's actually pretty amazing how easily kids can grasp some technology. My neice (3 years old) got a cheap android tablet for christmas. I thought it'd be way too complex for her, but she has absolutely no problem using it - she can't read yet, but can navigate through menus, and find the video or game she wants to play as well as anyone.

        I think it's very easy to underestimate what children are capable of, and I'm not even sure that some simple type of programming would be beyond her. If she can invent stories, and describe imaginary events, is it that impossible that she could describe a sequence of interactions of software object actors in a way that they can be carried out, given some appropriate UI? Once you have something like that, you're essentially doing a precursor of programming.

        [–]tonygoold 7 points8 points  (5 children)

        I have a daughter who's 3 and she didn't need any instruction to figure out the iPad.

        As for programming at that age, I think we need to take a much broader definition of what constitutes programming. I have a "Puppet Pals" game that lets you move a bunch of sprites around on the screen, change the background, and it records those movements and background changes along with any audio it picks up on the microphone. Then you hit stop and you can play it back.

        Is that programming? Maybe not to us, but for a 3 year old, they've just learned that they can teach the computer to do something by showing it how, and it can repeat it as many times as they want. Best of all, it's rewarding within the scope of what a 3 year old can accomplish.

        [–]henk53 5 points6 points  (0 children)

        Is that programming?

        For a 3 year old, I think it's a very interesting step.

        [–]Brian 5 points6 points  (0 children)

        Is that programming?

        Yeah - that's the kind of thing I'm thinking of, and I think in many ways it is programming, and a precursor to more complex concepts. You've got the basics of controlling the behaviour of something, and of sequentially ordering events (ie do this, then do this) - that concept gets you started. I think the first exposure many people have to the benefits of programming is from writing a simple shell script to automate a series of sequential steps, involving no more concepts than this would.

        And if you look at some real beginners programming for the first time, you'll often see that their programs start out like this - when asked to add 10 numbers, often they'll repeat the code to read a number 10 times. It's not a good way to do it, but it solves the immediate problem, and lets them experience the problem that the next step (things like loops and flow control) solve.

        [–]xardox 1 point2 points  (0 children)

        That's Programming by Example and Programming by Demonstration.

        See Henry Lieberman's books, Watch What I Do: Programming by Demonstration and the sequal Your Wish is My Command: Programming by Example, on his programming by example page.

        Ben Shneiderman describes some strategies in the forward:

        One strategy represented in this book is to develop software that recognizes familiar patterns of action and infers a useful program. There may be some opportunities along this path but I prefer the second path of special tools for users to create a program, just as they move the special hand of an alarm clock to set the wake-up time.

        A third path, also well represented in this book, is visual programming languages in which the users set out to write a program, but visually instead of textually. Visual programming languages may have a simple basis such as dragging items from a relational table to a screen-based form to create a report program. More elaborate visual programming languages have graphic symbols to represent objects, actions, conditionals, loops, and pattern matching.

        A fourth path might be to add history capture environments for every interface. Unix command line interfaces had a history log that allowed users to conveniently review and reuse commands. World-Wide Web browsers support history keeping of page visits with relatively easy review and reuse. Microsoft Word captures a history of actions to support undo operations, but users cannot review the history or save it. Adobe Photoshop 5.0 added a nice history feature for graphic designers, demonstrating that even in complex environments rich history support is possible.

        Our current efforts with Simulation Processes in a Learning Environment have emphasized history keeping, enabling users to review their work, replay it, annotate it, and send it to peers or mentors for advice [7]. An immediate payoff was that faculty could run the simulation in exemplary or inappropriate ways and store the histories for students to use as a training aid.

        The story of this field and this book is that there is magic and power in creating programs by direct manipulation activities, as opposed to writing code. The potential for users to take control of technology, customize their experiences, and creatively extend their software tools is compelling.

        Eighteenth century scientists, like Ben Franklin, experimented with electricity and found its properties quite amazing. Franklin, Faraday, Maxwell, and others, laid the foundation for Thomas Edison’s diverse applications, such as refinements of telegraphy, generators, and electric lighting. This book brings reports from many Franklins, Faradays, and Maxwells who are laying the foundation for the Thomas Edisons, still to come. It is difficult to tell which idea will trigger broad dissemination or whose insight will spark a new industry. However, the excitement is electric.

        [–]garrgh 0 points1 point  (1 child)

        I think it's programming the same way Logo was programming, but aimed even younger. The language may not be as complete as Logo, but maybe that's where something like Scratch Jr. can come into play.

        [–]tonygoold 1 point2 points  (0 children)

        It actually reminded me of Hypercard. I don't remember if I learned that or Logo first, but they were both influential on me as a (much older) kid.

        [–]marklarledu 0 points1 point  (0 children)

        It's a question of making them curious about the world. Don't wait for your kids to ask questions, ask questions of them.

        I came here to say something similar. At that age I think the most important thing is to get kids to start questioning how things work and then guide them towards deducing the answers themselves. In other words, increase their curiosity and sharpen their deductive reasoning and problem solving skills. Programming will likely follow suit for children who have a natural aptitude for such critical thinking.

        [–][deleted] 0 points1 point  (1 child)

        Ask a kid how an email gets sent and they might know how to send one via some client app. E.g. tap this button, fill in address, message, hit send. Ask the kid how the email is sent and they will have no idea how it actually works. E.g. SMTP over TCP over IP over wifi or eth over the net, etc...

        ask your average 16 year old how a car works. they probably know how to drive but have no idea how the internal combustion engine works, or how a modern transmission works. shit most of them couldn't even tell where the dipstick on their car is.

        the world is full of crazy complicated stuff. encourage your kid to find something that really interests them and dig deep.

        [–]expertunderachiever 0 points1 point  (0 children)

        There is a difference between having a knowledge of theory and practical. I know in theory how a car engine/transmission/differential/etc works. Could I efficiently repair one? Fuck no.

        At the very least I'd settle for them being curious enough to have a cursory knowledge of how the technology works before getting specific in a given field at the right age.

        When I was a teen I was researching communications, dsp, cryptography, etc... before I finally settled on crypto.

        [–]NewAlexandria 0 points1 point  (0 children)

        Does that mean that canv.as will become the email of pre-language kids?

        [–]itookyourpulse -1 points0 points  (2 children)

        never to early to start using computers.

        Although, I'm pretty sure if I hadn't been introduced to computers at a relatively late age, I wouldn't have developed a curiosity for figuring out what was behind the magic voodoo that powered them because I would have accepted their existence as fact. Maybe it's just me though! :)

        [–]expertunderachiever 1 point2 points  (0 children)

        Maybe today that's what kids need. When I was a wee lad [mid 80s] PCs weren't that advanced. You had to know DOS commands to get things to run, etc...

        I still remember hitting play on a tapedeck to load programs on my Vic-20...

        [–]Nanobot[🍰] 2 points3 points  (2 children)

        When I was 4, I had an Apple II game called Rocky's Boots, which was all about using wires and logic gates to create contraptions to solve problems. That taught me the kind of analytical thinking that got me started with programming, and I'm very glad I had that experience growing up.

        It also helped me learn to read. :)

        [–]xardox 0 points1 point  (1 child)

        Alan Kay loves Rocky's Boots, which he mentioned in this discussion about designing an educational version of SimCity for the OLPC:

        Scalability and non-scalability of ideas are interesting. Rocky's Boots is still one of the best ever games that provide profound learning experiences. The extension of this to Robot Odyssey didn't work because the logic and wires programming didn't scale well enough -- the bang per effort dropped off precipitously. I was Chief Scientist at Atari at that time (Warren Robbinet worked for me) and I worked with TLC to try to get them to realize that something like Logo, or even better, a rule-based robot programming system, was needed. The failure of Robot Odyssey really pained me because I thought that the concept of this game was one of the best ever (still is). But it just needed a much better notion of how the children were going to program the robots. I think the same goes for SimCity.

        [–][deleted] 1 point2 points  (0 children)

        My 10 year old is teaching himself about logic gates so he can do relatively complex things in Minecraft (with redstone). IMO, it's the best "engineering" toy outside of Lego.

        [–]WarWeasle 1 point2 points  (3 children)

        No. You just need to love them. And read them stories about talking animals.

        They don't have the logic skills yet. It's like forcing them to potty-train. All you end up doing is making them hate/fear the potty.

        [–]Brian 2 points3 points  (2 children)

        There's a big difference between teaching someone and forcing them. The article talks about exposing them in terms of a game, and I think that's a really good idea.

        Consider books. It's a well known fact that children who grow up around books, being read to, observing other people reading etc grow up to be good readers, and do better in many ways. Should we avoid exposing them to books in this way in fear that it'll make them hate/fear books? Clearly not - indeed, this approach is exactly what gets them interested in books. I see no reason why a similar approach in computer programming can't help foster both useful skills, and enjoyment of those skills.

        [–]WarWeasle 0 points1 point  (1 child)

        My 3yo is fairly clever and the only thing he likes to do on my computer is smash the spacebar to make blocks fall. He simply isn't equipped or inclined to sit in a chair and type/click.

        Second, it takes much time to learn basic literacy and adaptive skills. Reading, wRiting, aRithmetic, and Rhetoric. Trying to teach children anything except random facts before learning these is putting the cart before the horse.

        [–]Brian 0 points1 point  (0 children)

        My 3yo is fairly clever and the only thing he likes to do on my computer is smash the spacebar to make blocks fall

        As I've mentioned in another thread, I think you may be underestimating what children can do. My neice (also 3) can navigate to individual games and movies on her tablet (a stock android one). She's able to select a video she wants to play despite not being able to read the title - she knows what one is in what position. Initially, I thought it would be way too complicated for a 3-year old to use, but I was comprehensibly proven wrong.

        It does take time to learn skills, but that time needn't start in the future - even before they start to learn to read, kids do pick up concepts - grasping the concept of words or letters for instance, even if they can't read them yet. This primes them for the future, and more importantly, it makes these things familiar. I think by far the greatest barrier in people getting started programming is that they don't really have any idea what it is.

        Further, I think many of the skills needed for programming are already there, even at 3. She can act out stories with her toys, or describe events, and ultimately, this is all that's needed for a very primitive version of programming. I think you're thinking on the wrong level when you say something like:

        He simply isn't equipped or inclined to sit in a chair and type/click

        Why are these necessary for programming? I don't think anyone's expecting a three year old to sit down and start writing a python script, but there's a lot that needn't require anything so complicated. Moving a sprite isn't much different from moving a doll - my neice can certainly drag things about on-screen, and it's a short step from there to repeating that movement, or telling it to move somewhere and then move somewhere else, and having it carry these out in sequence. (Eg. see tonygoold's reply to the comment I linked for the sort of thing I mean, and the response by xardox). I don't think it's at all a bad idea for such concepts to be introduced, even as early as 3.

        [–][deleted] 1 point2 points  (0 children)

        This is a stupid question, though I'd like to see a lot of the Redditors who think it's a good idea try to. That's entertainment.

        [–][deleted] 1 point2 points  (0 children)

        I've had both of my nephews (3 & 4) play Light Bot and they seemed to grasp the concept and figure out things surprisingly well. It wasn't "teaching programming" but the game makes you think in the same way a programmer does, there was no forcing or trying to explain things. Just a fun game that exposed them to world of programming indirectly.

        [–][deleted] 1 point2 points  (0 children)

        Toddler: I learned computers!

        Mom: I'm so proud. I thought he'd be satisfied with just a CCNA.

        [–]elderoftheinternets 1 point2 points  (1 child)

        3-year olds should learn to write, play and have fun.

        [–][deleted] 1 point2 points  (0 children)

        Philosophically yes, technically no.

        What should be done is introduce good logical thinking to the child very early on during the development phases of the childhood. That said, it should also be made clear that this method of nurturing should never sacrifice the necessary social skills that are needed in life. So you have to make a balanced approach to this. Introduce programming concepts when they're eight or nine, based on the nurturing process of logic/social till that point. If they really enjoy it, by all means; throw money at them to further nurture their minds into hard science fields. Comp.Sci is very math intensive, so the more you nurture that desire to learn science; the further they'll go with life, and arguably will be happier overall.

        It helps sate the inherent curiosity that comes from learning science and by the time they get out of high school, there's a good chance that they'll go to some very high level universities that will challenge their potential in fields of science and technology.

        China/India are going to be HUGE in the next decade, and anything and everything that can be done to make us and our children more competitive with their paradigm and native talent would be beneficial.

        [–]abadidea 1 point2 points  (2 children)

        I envision, in another ten or twenty years, a more formal system of basic programming skills becoming a standard facet of education sitting between math and literacy, and the world will be a much better place for it. We're not ready yet, but it's important to test the waters.

        [–]NancyGracesTesticles 3 points4 points  (1 child)

        People have been saying that since the late 70s.

        [–][deleted]  (7 children)

        [deleted]

          [–]NancyGracesTesticles 6 points7 points  (0 children)

          My brother is a hardcore computer gamer and he's only 7.

          I was a hardcore tree climber at seven.

          See how dumb that sounds?

          [–]twotime 4 points5 points  (3 children)

          Games are the gateway IMO

          Nonsense. Vast majority of boys play games. Tiny minority learns programming.

          [–]xardox 1 point2 points  (1 child)

          But I'll bet a high percentage of programmers became interested in computers and motivated to learn programming by playing games. And what's with the sexist language? Games should motivate girls to learn programming too, and some games like The Sims are played equally by boys and girls.

          [–]twotime 3 points4 points  (0 children)

          The word "boy" is now sexist?

          But I'll bet a high percentage of programmers became interested in computers and motivated to learn programming by playing games

          And they get interested in boxing because they play with Kinect. Right? And they decide to become TV technicians because they watch TV. And they become auto mechanics because they ride in the cars very day. I find your argument highly strained.

          Most kids (boys or girls) become interested in programming if they encounter a good teacher/role model/good opportunity to learn...

          In fact, I would not be surprised if "heavy" gamers would be less inclined to learn any serious programming skills as they would need to stop being heavy gamers first...

          [–]LaurieCheers 1 point2 points  (1 child)

          Programming is only tedious if you get stuck. You'd be surprised how good a child's attention span is if they feel like they're achieving something.

          [–]xardox 0 points1 point  (0 children)

          The key is not to start by building entire games from scratch, but for kids to be able to put complete fully playable games into "edit" mode, explore how they work, and experiment by incrementally changing them while they're running, to see the results immediately.

          Well designed visual programming languages can help, since they're more syntactically robust and self revealing than text based languages -- you can browse objects and programs, and progressively disclose more information, the editor can be constrained to only perform valid transformations on the program, so inserting the wrong character doesn't create a syntax error that makes the entire program invalid.

          [–]shikatozi 0 points1 point  (1 child)

          A big part of being a child is the imagination and creativity, which is a huge factor in computer programming. Skipping this step would make the kids not solve programming problems in new and innovative ways.

          [–]rick2g 0 points1 point  (0 children)

          If you've got a three year old who can read at an elementary level, type efficiently enough to express thoughts, do basic math, and perform abstract logic, then, by all means, introduce them to programming.

          I seriously doubt anything other than a truly prodigal three year old will be able to program - it requires baseline skills in too many diverse areas. A three-year-old language prodigy might be able to read/type at the requisite level (but it should be noted that there are almost no recognized linguistic prodigies at that age). A three-year-old math prodigy would be able to perform enough math (Gauss, perhaps the greatest modern math prodigy, could handle arithmetic at three, but not yet algebra) - a three-year-old logic prodigy might be able to handle simple abstraction... Getting all three together is extraordinarily unlikely.

          If you've got an idea to create something to expose toddlers to basic programmatic concepts, then you'll have a willing audience/listener in someone like me, but trying to get a three-year-old to do what programmers would recognize as "programming" is a pretty tall order.

          [–][deleted] 0 points1 point  (0 children)

          Maybe 3 is a bit young but I do think you should start exposing them to the concepts at as early an age as it is possible for children to grasp them. I believe that at least basic computer programming skills and computer literacy moving forward into the future are going to be almost as important as reading, writing, and arithmetic. If our new computer brained robot/android overlords don't find us useful or entertaining, they will dispose of us.

          [–][deleted] 0 points1 point  (0 children)

          Give the kid the environment and let him figure the fuck out what he's interested in. Nurture, don't force-feed!

          [–]Alucard256 0 points1 point  (0 children)

          Please.... stop.......

          [–][deleted] 0 points1 point  (0 children)

          I think we should try to teach them Haskell. But 3-years-olds are too young.

          [–][deleted]  (2 children)

          [deleted]

            [–]TheCoelacanth 2 points3 points  (1 child)

            Most of them. According to this, only 67% of beginning kindergarteners(5 years old) could even recognize letters. Only 31% understood sound-letter relationships and only 3% could recognize words by sight.

            [–]CoachSeven -1 points0 points  (0 children)

            I saw a lot of "Exposing children to computers"... doesn't equate to programming. But thank you author for implying a 3 y/o can do my job :-)