Should kids be taught to program?

Moderated by Lawrence Dignan | April 15, 2013 -- 07:00 GMT (00:00 PDT)

Summary: Schools should prepare our children to thrive and compete in a digital world. But is coding a requirement for tech fluency?

Charlie Osborne

Charlie Osborne

Yes

or

No

Matt Baxter-Reynolds

Matt Baxter-Reynolds

Best Argument: Yes

80%
20%

Audience Favored: Yes (80%)

The Rebuttal

  • Great Debate Moderator

    We're almost ready to start.

    Are you ready?

    Posted by Lawrence Dignan

    All set

    Ready to begin.

    Charlie Osborne

    I am for Yes

    Ready at this end.

    Let's start.

    Matt Baxter-Reynolds

    I am for No

  • Great Debate Moderator

    Benefits and drawbacks

    What can coding bring to kids? What can't it do?

    Posted by Lawrence Dignan

    It's everywhere but not for everyone

    The difference between education and training. In the West, we train children how to use software, but we don't educate them in how it works. Computer science isn't like learning how to drive a car or how to write a resume -- computers control our tax systems, credit cards, give us access to the Internet, connect our surveillance cameras, and monitor who we keep in touch with. It's part of society, and a large one. It's misguided to think that learning how to use Microsoft Office and Powerpoint for years on end is going to help children in their quest to secure a job in the future, and by teaching them the why and not just the how, we can help educate our students and refine their reasoning thought processes.

    It may not be a subject that every student has aptitude for, in the same way that not every student enjoys learning French. It may not be useful for someone who wants to be a mechanic, but its far from a "special" or "elitist" subject, and those who may want to pursue a career in computing shouldn't be limited just because not everyone sees the value in teaching such a subject. Just like any other, studying coding -- or english, or maths -- results in a set of transferable skills which can make transition into the workforce easier and make a student more appealing to an employer.

    Charlie Osborne

    I am for Yes

    Logical thinking

    The argument "for" teaching kids to program is that it is logical, and it encourages logical thinking.

    My argument is that kids are "already" taught to think logically in schools, and that -- within the UK at least -- there is less focus on facts and more focus on reasoning things out.

    What programming can't do is embrace the whole spectrum of how individuals think through problems. I happen to have a mind that -- I guess -- is rather well-suited to writing computer software. But when it comes to marketing, or painting, or car maintenance, I am totally, *totally* hopeless.

    The fallacy of this argument lies in the idea that all children would benefit from being taught how to think through a problem as a computer programmer would. They would not. Large numbers of children would simply be made to feel excluded and stupid just because they are not predisposed to think through problems in that way.

    We all had subjects we were good at and bad at (and likes and disliked) at school. What makes "programming" a subject that we assume everyone is good at.

    Matt Baxter-Reynolds

    I am for No

  • Great Debate Moderator

    Priorities

    Should the education system improve other areas (math and science for instance) before worrying about code?

    Posted by Lawrence Dignan

    It's the basics

    The education system is not perfect. Improvements to core subjects will always be argued and debated, agreed, changed and then scrapped due to budget worries, but while this is taking place, IT continues to underpin our infrastructure and becomes even more engrained within society. It's not so much about "code" itself, but giving students a basic knowledge of how technology works -- in the same way that we give children a basic understanding of biology, chemistry and physics, things that shape our world.


    It shouldn't be the case that people believe teaching children about computers means you have to pull out all the stops. There's nothing special about it -- it's now necessary. Our world is networked, and companies are crying out for staff that have an understanding of computing and coding. Whether we like it or not, the point of education is to make a child a valuable addition to society who is able to support themselves. As the West's dependency on technology grows, we are doing children a disservice by ill-preparing them for such a workplace.

    English, science, and maths are all agreed upon as core subjects. However, coding -- as part of a radical overhaul of the "let's teach them how to touch-type and use Microsoft products" learning spectrum, can become an applied skill that may end up being far more valuable in the long run than memorizing the periodic table. The basics should be taught, and the option to go further should be on offer.

    Charlie Osborne

    I am for Yes

    Yes

    Yes

    Matt Baxter-Reynolds

    I am for No

  • Great Debate Moderator

    For everyone?

    Should the coding push be targeting all students or just some like those interested in math and science?

    Posted by Lawrence Dignan

    Preparing for the real world

    As an ex-teacher, I know that children have aptitude for different subjects -- some for math, some for sports, some for the arts. We shouldn't belong to the school of thought that children who learn coding will automatically become programmers and nothing else, just as science students who know how ecology works will not necessarily pursue the field.

    It's not about making coding "special" or "elitist," but bringing the subject into common study, and for the idea that children should understand just how our technology-driven society works as accepted as the fact they should have basic skills in reading and writing. It's not all about trying to create a generation of programming whizz-kids who will storm down the doors of universities to study computer science.

    Comparing code to teaching children "how to calculate stresses on a suspension bridge" or "how to read mass spectrograph output" is a flaw in itself. These examples suggest that coding is intrinsically without any applied value, or would only be useful in passing exams -- to be forgotten soon afterwards. But it's not. We are now sending our kids out into a networked world full of mobile technology, applications, surveillance and a reliance on technology to manage everything from our communications to our money. If we don't teach them the basics in how it all comes together, surely this ignorance should be an embarrassment to our education industry?

    Charlie Osborne

    I am for Yes

    More than one dimension

    If the argument was "should kids with a predilection for math and science be given stronger support around software engineering", I'd be voting "yes" rather than "no".

    What I hear in this argument is that all students -- regardless of how they think about problems -- should be taught that the rules we follow as software engineers are the best way to solve problems.

    To me, that's a one dimensional view that not only dismisses and excludes other ways in which individuals think about problems -- and it's that which is the inherent danger in this argument.

    Matt Baxter-Reynolds

    I am for No

  • Great Debate Moderator

    Learning the ABCs

    Learning to code has been compared to learning the alphabet or arithmetic. Is that a good comparison?

    Posted by Lawrence Dignan

    Need for the basics

    If you believe that programming -- or at the least, a more sophisticated computer science course -- should be as core a subject as english or math, then perhaps. However, in itself, this suggests that coding has to be learned by rote -- which simply isn't true. By starting with the basics, students can be challenged to create their own games and projects, and such learning can be an interactive experience. Not only this, but lessons in coding can develop skills in critical thinking, logic, and even team-building through collaboration -- which are all transitional skills valuable in any workplace.

    Code can encompass everything from algorithms to search functions, artificial intelligence to problem-solving -- and that certainly goes beyond the alphabet.

    Charlie Osborne

    I am for Yes

    It's not that simple

    The former -- no. Programming is nothing like the rote learning of an alphabet.

    Is it like arithmetic? I was always told it was, but never really saw that until I saw my own children trying to learn maths. Programming is only ever about "here is a problem", which you then decompose and decompose, down and down until you get lines of code.

    The logic that goes into the process of "I have 12 drawers and 10 pencils in each. How many pencils do I have?" is the same process of problem decomposition. The English of the statement needs to be decomposed into the sum "12 x 10", and from there into an answer.

    The issue is that programming is not that simple. Programming is the complex interplay of multiple subtle rules -- not just the decomposition of one task into one rule.

    This is where the problem diverges. Programming of any complexity is a specialised mental activity and -- rich tapestry of all human capabilities that we are -- any child who can't actually do that is just going to end up excluded.

    Matt Baxter-Reynolds

    I am for No

  • Great Debate Moderator

    Budget impact

    How do education budgets play into coding curriculum? Given tight budgets will coding always be a nice to have?

    Posted by Lawrence Dignan

    It's a big problem

    Budgets are forever the sticky topic in the education sector. A school can be plunged into debt by expanding their sports facility, or is faced with the expense of replenishing stationary and replacing books continually, as well as pay their staff and keep the school running. Sometimes, governmental budgets don't cut it.

    However, a school doesn't need to splash out on brand new hardware and software to teach children about coding. If a school has access to the Internet, there are a number of open-source projects available which not only include teaching exercises and how-to guides for teachers trying to keep up with changing ciriculums, but can also connect student and teacher to industry specialists. In addition, the Raspberry Pii has proven a popular tool to teach basic programming and may not stretch the budget too far.

    It's not easy, and sometimes schools make the wrong choices. Interactive white boards are all well and good for example, but work as a tool to enrich a teaching program rather than a necessity to teach a student a skill.

    Charlie Osborne

    I am for Yes

    Checks and balances

    No education system has enough money, but it does act as a "check and balance" against unnecessary expenditure, I guess. At least introducing coding into the curriculum won't just be a "knee jerk" thing.

    Matt Baxter-Reynolds

    I am for No

  • Great Debate Moderator

    Role of parents

    What is the role of parents in teaching code? Most schools aren't going to teach programming.

    Posted by Lawrence Dignan

    There are limits

    What's the role of parents who are  asked by their children to help them write a poem, or understand a math equation? Most parents won't teach their children about biology or art either, so they won't necessarily have a role in teaching their children how to code. Parents have to work -- more often than not, both in order to survive financially these days -- and so entrust their children's education to the school system.

    Unless children are homeschooled, which is a rare occurrence in the U.K. for example, parents often do not have the time or resources to help their children with academic work. Coding will likely be no different.

    Charlie Osborne

    I am for Yes

    Shared passion

    I would imagine though that there has to be some sort of "shared passion" in a subject between parent and child for it to be significantly additive to whatever the school is doing. I love science and engineering stuff, so that's what I like talking to my kids about whether we're doing homework or not.

    Medieval history? Not so much -- when they do that stuff I'll just be plugging away at whatever the teachers want them to learn.

    Matt Baxter-Reynolds

    I am for No

  • Great Debate Moderator

    Is coding necessary at a young age?

    Is coding necessary to be fluent in technology? Kids consume technology easily. Is it necessary to know the inner workings. Is learning to code the equivalent of learning to write?

    Posted by Lawrence Dignan

    The big picture

    The technology industry is broad, and programming is only one aspect. However, the process of logic and understanding the basics behind it is one that can be attributed to many industries. It is important that we make the distinction between the basics of coding and "understanding the inner workings," as one does not necessarily relate to the other.

    The basics of coding can broaden a students' understanding of the world they live in, and they don't necessarily have to understand the back-end of an application -- but they should know how data goes from here to here, and what happens to information they share and allow to be harvested. They need to understand more of their networked world, and if there are a few students who want to know more, the option to continue study should be available.

    Charlie Osborne

    I am for Yes

    No need

    Even professional programmers find that as time goes on, their day-to-day access to low-level of systems gets abstracted further and further up. A good programmer coming into the market today can go a long way without knowing what a pointer in C++ is, for example. The baseline abstraction away from the actual mechanics I don't think matters. It's just part of a societal driving forward of technological understanding.

    So do kids need to understand system fundamentals in order to get the most of out it? I doubt it. Plus kids these days (!) are going to have a far deeper sociological connecting with technology than my generation.

    Matt Baxter-Reynolds

    I am for No

  • Great Debate Moderator

    Here today, gone tomorrow

    Is there a risk that the code learned today will be irrelevant tomorrow?

    Posted by Lawrence Dignan

    Expanding rapidly

    With technology advancing as it is, perhaps. But whether irrelevant or not, coding is beginning to seep into a number of professions that at first glance are not related to constructing a program. For example, if you want to go into graphic or website design, you need to know how images can be integrated within static or CMS websites, or how to integrate a forum and gallery. You need to know how to read logic-based scripts like css, and to find kinks in HTML code. If you're working in administration, you may need to find out which formula in a database or excel spreadsheet is messing up your data and how to fix it. If you're working in research, the logic behind code can be applied to the thought processes required to make sense of statistics.

    The code itself may become irrelevant, but the taught thought processes behind it will never be so.

    Charlie Osborne

    I am for Yes

    Changing skill set

    That's an inherent risk in any sort of programming training, whether at school, university, or vocational.

    A programmer with 20 years commercial experience is unlikely to be using the same skills today as they were in their first year of professional practice.

    However, programming skills and "tradecraft" are independent from tools. So whilst the tools we use will be obsolete or irrelevent in years to come, the approaches won't be.

    Matt Baxter-Reynolds

    I am for No

  • Great Debate Moderator

    At what age to start?

    At what age would you say kids should learn some code?

    Posted by Lawrence Dignan

    Start them young

    I'd say with most subjects, the earlier you start, the better. It takes time to build any subject knowledge up -- whether it is your ABCs or your understanding of the periodic table, and code is no different. You have to wonder -- when teenagers nowadays are struggling with HTML tags, if they had learned this language earlier, how far could they go?


    The basics, combined with additional lessons in digital citizenship and ethics, should be available to every student in the West. As a former teacher, I believe that you can make any lesson fun by turning it into a game or competition -- and coding is no different. Just add a bag of sweets as bribery and even the youngest will become enthusiastic. Our connection to the digital world is happening at a younger age (I felt uncomfortable when I saw that my four year-old cousin has a Facebook account set up by his mother), and so we should strive to impart a level of understanding at a younger age too.

    Charlie Osborne

    I am for Yes

    I started at 8

    I started about eight. If you did want to create a little offspring programmer-type person, that's about the right age.

    Typing skills you can start earlier with!

    Matt Baxter-Reynolds

    I am for No

  • Great Debate Moderator

    Last question: Serious or selfish?

    You could argue that groups like Code.org are just looking to fill jobs for computer programmers in the future. Is that a valid argument? And is that a selfish motive?

    Posted by Lawrence Dignan

    Job skills are desperately needed

    Frankly, when so many graduates and high school leavers are out of work, any skill which can get you ahead of the game is worthwhile. Perhaps Code.org does have that motive, but so what? There are non-profits who aim to improve the reading and writing skills of teenagers and young people in London, and there are free training courses on offer in basic computing skills. The army recruits for potential infantry soldiers. I don't see anything wrong with giving students, teachers and members of the general public the chance to learn a trade, and although we all have motives for what we do, if these sorts of schemes can help secure the next generation's future, why not? 

    Charlie Osborne

    I am for Yes

    No

    I don't think that's a fair argument, no.

    Matt Baxter-Reynolds

    I am for No

  • Great Debate Moderator

    Thanks!

    To the Charlie and Matt for a great debate. And to you readers who joined us. Check back Wednesday for the closing arguments and I will announce the winner on Thursday.

    Don't forget to talkback and share your opinions.

    Posted by Lawrence Dignan

Talkback

103 comments
Log in or register to join the discussion
  • I wouldn't vote against it.

    I suppose it's ultimately up to the public, but I wouldn't vote against it. It's a good skill to learn, and it's tied in with mathematics and logic.

    Logic especially needs to be taught. I can't believe how many people out there can't tell the difference between objectivity and subjectivity, don't know the difference between opinion and fact, and think that just being the loudest in the room somehow equates to being right.



    . . . how many tech pundits are thinking that forecasting is 100% accurate? How many times have I seen some tech pundit try to predict everything, everybody worships his/her opinion, and he/she turns out to be completely wrong?

    More than I can count. Microsoft should've been dead 10, 20 years ago if predictions were accurate. Take a walk through the ZDNet archives, it is rife with proclamations of Microsoft's death that never came to be.

    Even proclamations of "no, we **REALLY** mean it this time, it's true, it'll die this time! We have MORE REASONS! It must die! It cannot possibly live after we give you all these NEW REASONS!!"

    . . . . which again never came to be. Apparently nobody in ZDNet had ever read the story of the boy that cried wolf. And apparently they don't realize that "reasons" are often subjective opinions, not objective facts.

    You'd think they'd learn - yet here we are again - this time with the PC rather than Microsoft. Instead of doing things differently and being more careful with sweeping predictions - nope, same old, same old.

    It's the same symptoms: I'm seeing an underwhelming amount of actual research into the actual cause of the decline of PC sales - just political posturing.

    And no, repeating the ideas of some famous tech figurehead does not count as "research." Research should consist of data, numbers, and analysis.

    And no, using a lot of words to say why you are "right" and everybody else is "wrong" is not analysis. Analysis means taking the information following where it leads, being careful not to make it say any more or less than it really does.

    Humm, now that I think about it - we should be teaching tech pundits programming as well :/. Might learn some logic skills.
    CobraA1
    Reply 4 Votes I'm for Yes
    • You're mostly right

      I totally agree that Logic should be a subject taught in school - starting at the elementary level. However, it should be part of the communications discipline.

      Although programming uses logic, it does not teach it. Even programmers fall into the objective/subjective and opinion/fact chasm. Based on many of the posts on ZDNet, some who claim to write programs also think being the loudest, or most vulgar, somehow makes them right.

      Programming should be made available in schools, but not mandatory. All students are taught basic math, but not all have to take trig or calculus. These things are available for those interested. Chemistry was mandatory at my school, but the only thing I remember from it is that HIOAg is Hi O Silver. Mandatory courses need to stick with the rudimentary skills used in all disciplines and applicable to daily life - starting with effective communication.
      Webminotaur
      Reply 1 Vote I'm Undecided
      • programming does teach logic

        Absolutely it teaches logic -- if those are the assignments:



        mother_child(trude, sally).

        father_child(tom, sally).
        father_child(tom, erica).
        father_child(mike, tom).

        sibling(X, Y) :- parent_child(Z, X), parent_child(Z, Y).

        parent_child(X, Y) :- father_child(X, Y).
        parent_child(X, Y) :- mother_child(X, Y).

        This results in the following query being evaluated as true:

        ?- sibling(sally, erica).
        Yes


        (from wikipipedia, prolog language)


        That's logic right there.
        THUFIR.HAWAT
        Reply Vote I'm Undecided
  • Question is not clear

    Are you saying ALL kids should be taught to program? If that's your assertion then I say no, because it's not something the kids need to know. English, history, science, and math, yes, those are subjects all kids need to know. However, having knowledge of C+ and how to create the new version of Windows is not something every child needs to know.

    I'm assuming your question is, should programming be taught in schools as an option. In that case, yes, if the child wants to learn programming then they should be given that opportunity. If they want to be the next Bill Gates, let 'em have at it.
    Maha888
    Reply 3 Votes I'm for Yes
  • Yes - without a doubt

    The reason that Maths and English are required subjects is that we speak in English every day and it defines us culturally. We use maths every day because we require it every day in our jobs, it underpins the economy. Now if you think about the role that IT plays in everyday life, it applies to both life, commerce and culture and in no small measure.

    For some reason, people think that coding is unapproachable. This is complete rubbish and shows its immaturity (it's only been accessible to the man in the street or 30 years unlike English and Maths). Take maths - if you showed someone a trigonometrical calculation before they had started learning maths at all, their eyes would glaze over and they would say "don't get it, don't need it, not relevant to real life". You don't start with trigonometry, through, you start with the basics and work your way up to it.

    It's the same with programming. The difference, however, is that people can have a lot more fun learning coding than maths. While you learn the code you write can actually do stuff - put together simple games, apply some of the maths you are learning, make some API calls to other systems evem (much easier than mastering trigonometry by the way), communicate with people, draw stuff on the screen.

    But coding is 100% in the national interest. Shockingly, the quantity and quality of computer science applicants is dropping in the west. Countries like India, China, Russia, Romania however are very happily building up their expertise to the point that in 10 or 20 years we will be laggards where we used to be clear leaders. Take a look at http://code.org/stats for some sobering stats. Also, read the opening paragraph on the Raspberry Pi site http://www.raspberrypi.org/about . I think that we, as a country, could be about to do to our IT base what we did to our manufacturing and engineering so we could concentrate on banking. We will ship eastwards. It does not and should not be like this. Look at Germany - the best manufacturing country on earth and now responsible for propping up the EU, something the UK could not do as we have decimated our manufacturing base and have nothing to fall back on other than our beloved banks.

    It is time for us to grow up about our attitude to teaching people to code. We've arrived at 'geek-chic' and left 'spotty nerd' behind. Learning to Code teaches a pupil a hell of a lot more than how to code, by the way. It teaches us how to think logically, how to apply other skills we are learning, how to be creative in the digital world. If approached in the right way, it could be the most enjoyable subject of all as well as being critical to our national interests.

    So coding matters and I've hopefully persuaded some people of that but it needs to be well taught. The biggest danger, maybe a certainty, is that when a government committee puts together a programming curriculum, it will be flawed beyond belief. It will have taken many years to put it together in the first place. Then the committee will ensure that all the radical and exciting stuff has been removed. The net effect is that you will have something that is boring and out-of-date before a pupil even sets eyes on it for the first time.

    The approach that I advocate (I have written a mini-manifesto blog post you will be able to read here from Tuesday 16th : http://www.codio.com/s/blog/2013/04/post-curriculum/) is to take a collaborative, open source approach to teaching people to code. Throw the building of tutorials and rich coding content to the community of teachers and professional developers and make it completely open. The developer community is already doing this to a degree and there is not shortage of willingness. You would end up with a dynamic, organic body of work that does not need committees or curricula. It is a body of work that teachers can draw on as they wish.
    fmaycodio
    Reply 2 Votes I'm for Yes
    • Well argued!

      And it's only Monday!

      I'm going to add another bit to the argument here. "Coding" isn't simply some esoteric skill. It is the embodiment of various mental skills.

      Learning to "code" means learning to break big problems into smaller problems, analyse those problems, find solutions for those problems, and organise those solutions into a cohesive whole. Even if the child never becomes a programmer, those skills will assist them in what ever their chosen occupation happens to be, and in life in general. "Coding" should not be seen as the end in itself, but as the means of producing a more well-rounded, better educated individual.
      mheartwood
      Reply 5 Votes I'm Undecided
      • Absolutely agreed!

        People have different talents and skills, but KNOWING how other people do things NEVER hurts. For pragmatic or even empathic reasons...

        Indeed, I know what support people do, which is why I expect more from them than a sloppy job - but I do understand time constraints and other impositions put against them. As a customer, outlining the whole of the situation might not make the company I spent tons of money on feel any better, though, and such analysis on my part would whittle down the own people they hire that are supposed to do that sort of research and related work...

        Even then, the human factor - some people will just be sloppy, but usually there's an external impetus being applied. No choice is entirely of free will. After all, I didn't return to college and spend a ton of time and money on a whim - companies want people with higher degrees, even for entry level jobs whose wages cannot begin to pay the inevitable student loans...

        But, I ramble... :)
        HypnoToad72
        Reply Vote I'm Undecided
    • Learning to code was easier in the old days...

      When I was in college in the 1960's, one big perk of being a student was access (via punch card and printed reports over 24 hours, then later via hard-wired dumb printing terminals at strategic campus locations) to the mainframe, the only computer available. And students majoring in all branches of engineering were required to take a basic programming course in FORTRAN. This was also a recommended elective for math and business majors. And since programming was concerned mainly with text and numbers in, text and numbers out, the languages available were simpler to begin learning from books before getting on the hardware (for most of my college years, the primary "hardware" was the keypunch, a card feeding desk that punched holes to encode text entered on its typewriter-like keyboard). Programs could, and usually were, written out on paper, then on a "coding form" that allocated a square for each character, and studied for logic errors before even getting to the computer.

      The main obstacle to my learning, at my age, any of the languages now used to write OS and apps for today's machines is the cost of legally licensed program editing and compiling software. If the schools can possibly pay for the volume licensing to allow kids to write and compile programs in a language with a useful lifespan, go for it.
      jallan32
      Reply Vote I'm Undecided
      • Discover Open Source/Free Software

        Linux exists in a near completely free environment, and use does not constitute a license violation. Many Linux programs have been ported over to Windows, and fewer, but still a great many to Mac (iOS).

        GCC is one of the most used commercial C compilers, and it is Free Software. GCC compiles C, C++, FORTRAN, and more. If you don't want to use a simple editor to write your code, consider Eclipse, also available free.

        Or, you could master a Script Language. Like Java (Available free) or Python, Perl, Ruby, TCL, and more. There are also Lisp programs and compilers out there for free too.

        Where are they? Google knows. Google is your friend.
        YetAnotherBob
        Reply Vote I'm Undecided
        • Oops, I Forgot

          I forgot to mention Java Script. You already have the language, as it is built into all browsers. There are libraries available that extend it from a basic level. It's a lot like C programming, but with a reduced instruction set. Still, it's Turing complete!
          YetAnotherBob
          Reply Vote I'm Undecided