Is it worth teaching young kids to code?

October 7, 2013 at 1:26 am 19 comments

How young can we teach kids to code?  Is it worth teaching really young kids to code?  The argument below is missing the whole point of the difference between natural and artificial languages.  Programming requires specification of details that do not occur in natural language (as seen in John Pane’s work, and related to the “Communicating with Aliens” problem).  Why should our evolved language acquisition systems help with that?

The article linked below is pretty good as these things go, but they’re missing a lot of nuance in what it means “to code.”

  • The article argues that students can start learning computer science “before they learn to read and write.”  What does it mean to learn computer science then?  Can we talk about manipulating symbol systems?  About notation?  If you pull out literacy, what are you teaching?
  • The reports I’ve read about kids learning to program (like Roy Pea’s reports from decades ago, to Yasmin Kafai’s reports on students working in Scratch) suggest that young kids who “program” tend to build sequences of statements, with few conditionals or loops or defining named chunks of code (functions or procedures or whatevers).  Is that what most of us think about when we’re suggesting “learn to code”?
  • So, let’s say that you successfully teach some 5-6 year old to write some programs that we’d agree looks like “coding.”  Do you really expect that to have an impact 20 years later when they reach working age (as is suggested as the potential value in the article below)?  Especially if there’s almost no use of programming in formal education over the following 12 years?

I am not convinced that we can fruitfully teach five or six year olds to code — though it’s certainly worth exploring and experimenting with.  I would not expect it to have much effect, though.  If we had a school system that used code in interesting and powerful ways across the curriculum, then starting to teach kids to program at five or six as steps toward computational literacy would make lots of sense.  But if only 12% of US high schools have computer science, and far fewer middle and elementary schools have it, and CS is still just this little class in the corner that doesn’t connect to anything else — then you can’t expect the coding that happens at that age to have much effect.

But that pessimism is at odds not only with the experiences of Gibson and other pioneering teachers but also with the science of language acquisition. Extensive research has shown that because young brains are so adept at picking up languages, it’s best to introduce children to foreign tongues as early as possible. This is why so many ambitious parents are now clamoring for kindergartens that offer intensive Mandarin—they want to give their kids the best possible shot at learning a key language of the Asian century.

What those parents likely don’t realize is that the same neural mechanisms that make kids sponges for Mandarin likely also make them highly receptive to computer languages. Kindergartners cannot become C++ ninjas, but they can certainly start to develop the skills that will eventually cement lifelong fluency in code.

via Forget Foreign Languages and Music. Teach Our Kids to Code | Wired Opinion | Wired.com.

Entry filed under: Uncategorized. Tags: , , , .

Teaching Programming with Music: An Approach to Teaching Young Students About Logo One schoolgirls’ story: Why schoolgirls are not interested in studying IT

19 Comments Add your own

  • 1. Jeff Rick  |  October 7, 2013 at 3:28 am

    CSEd is still in its infancy. In comparison to language or mathematics learning, we have only a foggy notion about how adults best learn how to program and how to best support that. Adding a developmental component to it (i.e., what capabilities do children at a certain age and development level have to understand programming and how do we best support them) makes an already difficult problem pretty fiendish. Given how complex the problem is, it seems more rife for design-based exploration than systematic study or large-scale deployment. As a researcher, design something cool (if you’re going to do this, you probably have a good feel for what is cool). Test it and find the right age. Reflect on it publicly. Iterate. Something interesting is likely to pop. You probably won’t know what that is until it does. In Scratch, the idea of sharing with a community popped. The community was far more compelling than people who developed it thought it would be. EToys, which started as a little hack of visual programming, demonstrated how compelling computationally manipulating drawings can be. The idea popped and was adopted by Scratch. Alice / Looking Glass demonstrated how compelling storytelling is. By trying things, we are able to separate the good ideas from the bad. I could easily see that one programming environment (e.g., ToonTalk) could be really compelling for 5-6 year olds, both in terms of them enjoying the experience and in learning something important, whereas another (e.g., MS Developer’s Studio) would be really inappropriate. Who knows what CSEd will look like in 20 years? It could be that we get an effective computing curriculum for children from K through 12. Unless we try out new ideas, we’ll never know. Unless we share our insights (publish, share, critique, debate, etc.), our progress will be slow.

    Reply
  • 2. John Pane (@johnpane)  |  October 7, 2013 at 7:40 am

    Hi Mark, I agree that the analogy to natural language acquisition is flawed. What’s hard about programming is how it differs from natural language communication, not how it is similar.

    It seems reasonable to try to teach kids some of the underlying skills as soon as it is developmentally appropriate. I’m agnostic whether it is done by actually coding or by other activities that teach fundamentals such as precise specification. These can start with exercises like creating recipes/instructions/directions as well as mathematics, but eventually coding in some programming system seems desirable because fast, automatic execution can be very gratifying and instructive. But it is not to learn how to conjugate in a new language!

    Reply
  • 3. Bonnie  |  October 7, 2013 at 8:18 am

    I think it could be useful, not because 5 year olds are going to retain any specific language that they learn, but rather to introduce them to the algorithmic way of thinking early on. The problem is, they would have to continue to be exposed to that, over and over, as they progress through school. My number one problem with introductory CS students is that they can’t mentally cope with the idea that one step comes after another. They can *say* that phrase, but when it comes to actually working with a program, or even an algorithm in English, they have serious trouble with the idea of sequencing steps. I think early coding could help with that problem.

    Reply
    • 4. Mark Guzdial  |  October 7, 2013 at 9:42 am

      Bonnie, I’m not convinced. First, the amount of study/focus/effort required to develop a transferable “algorithmic way of thinking” at five years old is probably greater than what most five year olds can muster. Second, if there’s no other experience with CS over the intervening 13 years before they enter your class, what will they still remember and be able to utilize? If you want early coding to introduce algorithmic thinking before students enter your classroom, wouldn’t high school be more effective?

      I realized that I should have also brought up the equity argument. If we’re going to teach coding to 5 and 6 year olds, then we ought to make it available to all, or we are creating inequities. If you think it’s hard to teach high school teachers to teach CS, just try to reach all kindergarten and first grade teachers in the United States. As difficult as the CS10K challenge is, the CS100K-for-kindergarten-and-first-grade would be much more difficult.

      Reply
      • 5. Bonnie  |  October 7, 2013 at 12:11 pm

        I think high school is too late. And, notice I said they would have to continue to be exposed to it over their K12 career. I honestly think the skill is so hard for most people that it needs to be constantly reinforced. Up to this point, we have relied on natural ability – the few who are naturally able to “do it” and think that way – but it isn’t enough as we all know.

        As for equity, I would rather see us push to give more to all students rather than cut back for everyone. When I was high school age, I went to the only high school in my region that offered calculus. Should we have eliminated calculus because the other schools could not offer it? No! Equity is important to me because of the particular population with whom I work – mainly high need students who are first in their family to go to college, and who are usually from underrepresented groups. They are the ones who have been cut out. They are the ones who most need to be taught algorithmic thinking (and mathematical reasoning) from an early age, because they don’t have wealthy parents who can pay for afterschool robotics lessons.

        Reply
        • 6. Mark Guzdial  |  October 7, 2013 at 12:13 pm

          I agree with all your goals, Bonnie.

          Reply
  • 7. Rob St. Amant  |  October 7, 2013 at 9:45 am

    Good critique. From the article: “it is code, not Mandarin, that will be the true lingua franca of the future.” But as you say, this confuses programming languages with natural languages. The author doesn’t really describe computer programs as a way for people to communicate with each other. Maybe he means that “code” a way for us to communicate with computers? Possibly, but I don’t think that “communication” is the best way to describe what we do with computers, either when writing programs or just using software. Further, a lingua franca is a specific language, often developed to meet needs in some context, such as commerce. But it’s silly to think that some single universal programming language will be the lingua franca of the future.

    I think what he’s getting at is the concepts and the skills that underlie programming. If that’s the case, then “code” is being asked to do too much work. Learning to program is a good way to learn, but it’s those underlying concepts and skills that are what’s really important.

    Reply
  • 8. Michael Bolton  |  October 7, 2013 at 10:55 am

    On the language and communication thread, I urge a reading of Harry Collins: /Artificial Experts/, /The Shape of Actions/, and /Tacit and Explicit Knowledge/. Computer languages (which are compiled and “interpreted” by relatively straightforward, one-to-one string transformations) are profoundly different from human languages; they are not languages at all, and it’s an accident of history that we call them that. Human languages, used for human purposes always require genuine interpretation, which in turn requires placing the speech or writing in a social context.

    Here are two thought experiments:: try speaking Mandarin to instruct a computer to exhibit some behaviour. Now try speaking in Java to a person. (The impact of the first thought experiment will be greater if you’ve ever tried to learn Mandarin; the impact of the second will be greater if you value conversation.)

    I speak as someone who is quite capable of writing software, and who occasionally does so. The whole “teach kids to code” movement presumes that, in the future, people will have to program computers as part of their daily lives. A wonderful idea for some readers of Wired Magazine; repugnant to the rest of us, I hope. Teach kids to speak clearly, write evocatively and precisely, how to build a reasoned argument, how to converse. If they want to write software, let them learn to code. But let that be a choice, not an obligation, and not part of a mandatory curriculum.

    —Michael B.

    Reply
  • 10. Franklin Chen  |  October 7, 2013 at 11:05 am

    I would say that natural language is completely different from programming language (actually, not realizing this is part of the problem with programming languages designed by those who want to make them similar, and only introduce complexity and ambiguity). A programming language that is Turing-complete will implicitly require a certain grasp of logic, namely first-order logic. So the interesting question seems to me, can 5-year-olds grasp first-order logic? Personally, I was not ready for that until about 11, but I never saw a computer till 12. I hope there will be more empirical studies of what it is that young children can actually grasp and retain and apply.

    Reply
  • 11. gasstationwithoutpumps  |  October 7, 2013 at 11:49 am

    I’m in agreement with the idea that a one-off exposure to code (at any age) is not of much use without continual followup. I don’t think that this is a reason not to try teaching kids programming concepts at an early age. As Bonnie says, sequencing is a powerful concept and kids start being ready for that in kindergarten or earlier. Conditionals and looping are more powerful and more complex, but I don’t think that you need a mastery of first-order logic to be able to do some useful things with them—Franklin is making the classic mistake of assuming that you have to have a thorough understanding of a mathematical theory before you can use the results. Kids learn arithmetic without knowing Peano’s axioms.

    I think that Mark’s point about equity is unhelpful here—if we don’t do anything until we can do it universally, then nothing will ever get started. I like Jeff’s comment that we need to try things, keep what seems to be useful, and discard the things that don’t seem to help. We don’t know enough about how people learn to program to say what will work at scale, so we shouldn’t start with universal anything, but try lots of different things. (I would also argue that a diversity of approaches is more likely to be successful than putting a lot of effort into one approach—different people learn differently, and we need to have more diversity in how programmers think, which implies more diversity in how they are taught.)

    We don’t even know whether early exposure to coding will be helpful, harmful, or neutral—though most programmers do teach their kids, so there seems to be a common assumption that it is helpful or, at least, not harmful.

    I think that there is some transference from learning to program to other problem-solving domains (particularly the notions of sequencing, precise specification, and diving problems into subproblems), but the transference is not easy or automatic. Mark’s point about the shortage of teachers competent to teach even beginning programming is a good one—elementary schools have had a very hard time getting competent math teachers, and there are a lot more people trained in beginning math than in beginning programming.

    Reply
    • 12. Mark Guzdial  |  October 7, 2013 at 12:23 pm

      Your points are well-taken. Agreed that the issue of equity shouldn’t be a reason not to explore the question. The issue of equity does help us to understand the cost of making the change systemic and the amount of political will required.

      Reply
  • 13. joshg  |  October 7, 2013 at 12:13 pm

    I’d agree that the comparison to natural language is flawed.

    What does everyone think of an approach like this?

    The goal is to teach sequential actions and logic from what I can tell. I haven’t tried or bought into this KS, but it reminded me of a game for Icehouse pieces that I’ve played once or twice called RAMbots.
    http://www.koryheath.com/rambots/

    Maybe I’ll have to try RAMbots with my 5-year-old and see what happens.

    His kindergarten class has been incorporating card games into their play and take-home activities already; I don’t know a lot about primary education but they’ve been listing “taking turns, following game rules” as learning targets. It seems like that would connect with the sort of sequential thinking that these early-coder things are aiming for.

    Reply
    • 14. Jeff Rick  |  October 8, 2013 at 6:01 am

      If you have an iPad, the “Draw with the Turtle” App is pretty similar to the “Robot Turtles” game. I think it costs $2, so you can try the concept out yourself.

      Reply
  • 15. Alexander Repenning  |  October 7, 2013 at 1:32 pm

    The WIRED article features our Scalable Game Design curriculum but apparently may distort our vision of CS Education a bit:

    1) The idea that natural and programming language learning has to be zero-sum-game is NOT consistent with our views of CS ed. On the contrary, we have many schools using the Scalable Game Design curriculum in the context of language learning.

    ” The reports I’ve read about kids learning to program (like Roy Pea’s reports from decades ago, to Yasmin Kafai’s reports on students working in Scratch) suggest that young kids who “program” tend to build sequences of statements, with few conditionals…”

    2) This is NOT our experience with Scalable Game Design at all. For instance, 100% of students are using conditionals. Part of this may be that we conceptualize the tools developed and used (AgentSheets or AgentCubes) as Computational Thinking Tools and not just Programming tools. This includes the inclusion of explicit notions of computational thinking patterns in teacher professional development. The teachers and students are learning how to “implement” computational thinking patterns relevant to games and science simulations.

    3) While elementary schools are not the focus of the Scalable Game Design we have found that elementary students can grasp notions of computational thinking patterns. Also, most of elementary schools we work with are feeders into middle schools also using Scalable Game Design. So, yes, the benefits of “just” doing coding at elementary schools may not be entirely clear but if the students develop computational concepts that they are motivated to learn in the game context and later can leverage these concepts in building science simulation then, I think, we have gone a long way in CS ed.

    Reply
  • 16. Yes I think kids should code. | Ken Bauer's Corner  |  October 7, 2013 at 7:24 pm

    […] he posted about “Is it worth teaching young kids to code?“.  I recommend you go read the post yourself as well as the original article that he is […]

    Reply
  • […] he posted about “Is it worth teaching young kids to code?“.  I recommend you go read the post yourself as well as the original article that he is […]

    Reply
  • 18. 24: 4 Souces | sophiatechne  |  March 30, 2014 at 6:43 pm

    […]  https://computinged.wordpress.com/2013/10/07/is-it-worth-teaching-young-kids-to-code/ […]

    Reply
  • 19. CwC LA 2.3 | Andrew vs Grad School  |  December 8, 2016 at 10:41 pm

    […] Guzdial, a professor in the School of Interactive Computing at the Georgia Institute of Technology, disagrees with that opinion, believing that any education children of that age might have in relation to […]

    Reply

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Trackback this post  |  Subscribe to the comments via RSS Feed


Enter your email address to follow this blog and receive notifications of new posts by email.

Join 11.4K other subscribers

Feeds

Recent Posts

Blog Stats

  • 2,095,104 hits
October 2013
M T W T F S S
 123456
78910111213
14151617181920
21222324252627
28293031  

CS Teaching Tips