This conversation is closed.

Should we teach kids how to make programs instead of how to use them?

For the last two decades, most developed countries have implemented computer literacy education in schools. For students born in the 80s or even the early 90s, this was really important. However, students now no longer need this. They are already computer fluent. They are, as some people say, digital natives. Give them any program and they'll be able to teach themselves to do simple--to-moderate tasks without anyone teaching them in a short while.

Most schools teach students how to first use word processors, presentation programs, and spreadsheets. This is no longer needed for two reasons: 1) students are computer fluent, and 2) programs are getting more user friendly every day. Students don't need to be taught to use the programs they normally use. They should, however, be taught how to use the programs they will later need in life like spreadsheets and databases.
Instead, I think they should be taught programming. Although many schools around the school already teach programming, they teach it usually in highschool or junior high; if they teach it in elementary school, they usually teach a simplified "kids" language which uses drag-and-drop blocks. I think students should start learning programming languages like visual basic and Java in 5th or 6th grade. The first country that does this will have a huge IT revolution.
Kids are creative. Teaching them programming will be giving them the ability to direct this creativity and keep it.

So what do you think?

Written by a 16 year old.

  • thumb
    Oct 13 2011: One of the pivotal experiences in my own education was being exposed to text-based computer programming at the age of nine, when I was in fourth grade. My elementary school had a couple of very forward-thinking teachers who persuaded the school to purchase two personal computers (in 1979!) which could be programmed in line-numbered BASIC. A few years later my parents bought me one of my own, and eventually I upgraded to an Apple II computer.

    This extracurricular activity-turned-hobby was instrumental in teaching me practical mathematics, diagnostic problem-solving, self-discipline in maintaining backup records, fine attention to detail, and other really useful skills/habits. It made math come alive for me (and still does!).

    Your proposal is something I've thought of many times as an educator, wondering how well it would be received at the elementary school level. One potential barrier is that creating your own programs from scratch necessarily means you must begin with extremely simple (read: boring) programs, which pale in comparison to commercial software that kids are now accustomed to. Back in 1979, it was all new to us, and so even a simple "Hello World" program was exciting!

    To make it really work, I think you'd need a programming language that provides a lot of power to do nifty things without a steep learning curve, yet is not so high-level that it shields the student from understanding the underlying computing principles. Python is one language that comes to mind . . .
    • Oct 13 2011: Although it will be nice and preferable to teach kids things they enjoy a lot, this is not really necessary from the beginning. They just need to not hate it. I'm not a programmer so I don't really know how the curriculum can go. Considering your thought, they might start learning a programming language like Python, and then later on they start learning more complex languages. Once they like programming in itself, they'll start getting excited for learning more complex languages. Eventually they'll have a wide knowledge of different languages.
  • thumb
    Oct 7 2011: If you mean C++ and Java classes in high school, than yes
    • Oct 7 2011: No. Please read my entire post before replying. What I mean is programming classes (not necessarily Java or C++) from as early as 5th grade.
  • Oct 1 2011: Hi Nawaf,

    You have creative mind and Good analytical skills.

    My opinion on this would be-
    The main purpose of primary and secondary education is to teach the children, the Fundamental Human Qualities like Love, Humanity, Respecting elders, following the way of Truth, importance of Society, History of the his/her Country and the world, Basics of science, to play and may such things.

    Programming would be a professional skill and should be taught in college years. If some one wants to become a Singer, Doctor, Sports man, or any one except a programmer, why should he/she learn programming in school days?

    However, every one needs to know how to use Computers and handle applications. SO they are taught Basic computers in school. I would say, your point is not valid but definitely out of the box!!!
    • Oct 2 2011: what is our definition of "basic of sciences"? What makes biology, for example, a basic of science. A mechanical engineer, singer, or programmer won't benefit much from biology (I'm not saying biology shouldn't be taught; it's just an example). Educators teach it because they think it's essential general knowledge.

      Let's take a nearer example: computer classes. Why does a school choose a certain program to teach to students? Because they think it's essential if not for their daily lives, for their careers.

      The way I see it, a "basic of science" and "essential general knowledge" are a matter of opinion. If students are taught programming from an early age, we will have a revolution. I see programming as a "basic of science" because we interact with programs every single day of our lives. And for us born in the 90s and 21st cenury, we've been doing so since we were born. Isn't it the time to make the transfer from users to makers? Can you imagine the number of great ideas for software that would come out of a mind raised on software? Isn't it a shame for all those ideas to never come true when they can be made easily by a programmer.

      You see programming as a professional skill. This should be changed completely. We shouldn't treat as a skill better left for professionals, especially when some of the greatest programs and websites were made by enthusiasts.
  • thumb
    Oct 1 2011: You may be interested in the Free Software movement and Free Culture movement

    Free in this context means that people are free to take apart, study, and modify software that they have purchased. This is not allowed by US copyright law in many cases, although this is completely ridiculous.

    Imagine if you purchased a car, but the government prohibited you from painting it a different color, or from changing the tires to a brand that works better. Suppose you improved the car significantly, so it is now safer, faster, and more aesthetically pleasing.

    Now, suppose you had a machine that could instantly recreate a copy of this new car for every other person on the planet, for free. However, the government prohibits you from both improving the software and using this machine, so people have to continue using the expensive and poorly-designed original car.

    Should the government be allowed to do that? For the Free Software movement, the answer is a resounding "NO," because it uses the government as a vehicle to enrich the original producer through artificial scarcity at an enormous cost to humanity. The government should be doing the opposite - promoting the good of the many, not the few.

    If you think people would not create extremely high quality software for free, A) you are completely wrong, B) you should watch Dan Pink's TED talk on what actually motivates people, and C) you should think about the Wikipedia model, which produces higher quality articles than Britannica at lower cost.

    A culture in which kids are free to modify, learn from, and share software/knowledge would help people understand that software can be recreated for everyone at zero marginal cost - this would help us move away from forcing people to enrich themselves through artificial scarcity.
    • Oct 1 2011: This is also known as open source software. The biggest effect we will see as a result of educating programming to all students will be the huge rise of open source software.

      Let's look at the state of open source software now, specifically the third most common operating system, Linux. Since Linux began in 1991, hundreds of different versions were made. Now, versions of Linux or operating systems based on the Linux kernel run PCs (Ubuntu, GNOME, and many others), servers, smartphones (android is based on a Linux kernel), and has even became the most used OS on supercomputers (92% of supercomputers use Linux).

      Here are some points on the PC versions along with Android:
      -They are free.
      -Anyone can legally modify them, and many do.
      -There are many websites where people share their own mods or versions of it.

      So, you see, this already exists. The problem is that most people who use these count on those who know how to program and modify. This will change if most people know how to program. People will stop counting on software companies to make things suit for them, and instead will make things suit for them themselves. This, I believe, will change the IT world, which will of course change our lives.
  • Oct 16 2011: what i think is that kids should be taught to use programs rather than teaching them how to make them initially... Say if we have to give a presentation on any topic than its always better to use powerpoint application and make a slideshow containing slides representing our views on the topic than making a different program to design a different powerpoint sort of application and then make a slideshow because it would take a good amount of time to do so..
    Moreover it is necessary to learn using the presently available programs and softwares for making new ones because not all people (lets take an example here) know the meaning of the function of the commands include or include of C programming software or the meaning and functions of the commands DPTR, CJNE of microcontrollers or the meaning of commands of 'N' no. of other such programs and softwares and for developing sometihing new we need to know the advantages and disadvantages of presently available resources and that can be known only if you know how to use them "Efficiently"....
    • Oct 16 2011: BUT THEY ALREADY KNOW HOW TO USE PROGRAMS. I don't know a single 12-18 year old who doesn't know how to make a powerpoint presentation, regardless whether or not he was taught so in school. We're computer fluent. Of course I'm not suggesting that to make a presentation the student will have to program a presentation program. I'm only talking about what they should be taught in computer class in school, which is definitely not powerpoint and word processors.
  • thumb
    Oct 13 2011: :) you are not so small my friend....@16 you are old enough to write programs....but not all kids can keep up with that at 10 and 11 years of age....there are 100s of programs & applications that even i have never used...waiting for the need to what i'm saying is that explore as much as you can early....later you get enough knowledge to create your own...
    • Oct 13 2011: Of course there are thousands of programs and applications that an average 11 year old has never used. But there are also hundreds of other programs and applications that they have used. It really doesn't make a big difference. They've seen and used different programs. The only way knowing millions programs instead of a hundred is if they already know how to program (you get ideas for codes). Using different programs when they don't know how to program really doesn't make that much of a difference when they already use lots of programs already.

      Some programmers even made great programs back in the 80s, when there were much fewer programs and they were much less familiar with using computers.
      • thumb
        Oct 14 2011: What you say does make sense....i agree with most....the only reason i'm skeptical about writing programs at 10 is that i believe not all kids develop that intelligence to get along with it....try comparing yourself to the dumbest friend/person you may have ever met...and think if he/she would have been able to keep up....i know many of my friends would have failed ....they cant write programs even today at 21....that is a shame...i know...but its a fact...and i'm doing Computer Engineering...i'm talking about my class mates who take my help to write even simplest of programs....
  • thumb
    Oct 13 2011: Its a good thought but think about each and every kid out there....yes they get used to computers at an early age...but i feel its not yet the time to teach programming in elementary school...
    instead teaching them how to use programs would be useful...more the number of programs they know how to use the better....this way when they start to write the program they'll have the working of the program in their minds...
    they need to know what they are programming before writing the programming should be taught in high school or junior may increase the use of programs at elementary...
    • Oct 13 2011: Kids are using hundreds of programs. They're born using computers. They definitely have ideas for programs. We don't need to teach them how to use programs. They learn it themselves without any help because it comes natural to them. They're digital natives.

      Sincerely, a kid himself.
  • Oct 2 2011: Hello Nawaf, There are two things to look at in your argument.First, programming is a professional skill. Just like a doctor is good at surgery programmer is good at creating computer applications. That however does not mean that every student regardless of his interests should be taught programming. Its an individual decision. Another point is that you are talking about the IT revolution. How can we guarantee the fact that introducing the programming at school level will create such a revolution. We have been taught mathematics from the childhood, inspite of that very few people choose maths as their major in high school, same is the case with the other subjects like languages history, geology etc. Also creativity in children is not explored only through the art of programming. There are other(and perhaps better) means of doing that . Whatever we are taught at school level like mathematics, logic are necessary basics to the computer applications. Once you are thorough with it you can write programs in any language, because what you then need is just the syntax. We can draw a good analogy from subject of drawing. We are all taught how to draw at the school level but not all of us can produce the Monalisa..
  • Oct 2 2011: Programming is a selective career in the professional world of which not everyone wants to go into. It is not an essential element to life as an adult for everyone whereas many basic applications are, but i do agree that a minimal amount of programming in schools at a younger age would be beneficial to students because programming takes a lot of creativity and this could help that aspect along with critical thinking skills. I think schools should focus a little more on teaching kids things that will create a strong foundation for them such as writing.
    • Oct 2 2011: "Programming is a selective career in the professional world" Now that is something I'd like to see changed. This really reminds me of this Tedx video:

      One of the most important benefits to teaching kids programming is that the future general public will become makers instead of users. If everyone can make programs, imagine how that will change the world of computers and the internet, which will of course change our lives.
      • Oct 2 2011: I see your point, but that is a revolutionary change. Part of the reason the computer programming occupation is in high demand of qualified programmers right now is people do not have interest in it. I am someone who does have a lot of interest in writing programs, but the we must realize that your vision of everyone becoming their own maker of programs that we use every day is false reality. People have their own interests in what they like to do and you cannot just change someone that easily. Even if we slowly incorporated programming into the lives of kids when they are younger, eventually they will grow their own interests and programming will become unimportant.
        • Oct 2 2011: First of all, my point is to make a revolutionary change. It's a revolutionary change that will take only a small action: replacing the teaching of using programs like a word processor (which students already know how to use) with something more useful: programming. It won't waste more time, as it will be only replacing something.

          As for liking programming, I'd say that even though some may not like programming, those who will like it are more than you think. Many, if not most people don't program because they've never tried it in the first place. And besides, some students don't like chemistry or art or biology or whatever, but they still have to take it.

          You really need to read the study I posted earlier:
          A study was made on a bunch of 5th-7th graders where they were taught programming. Here's what the parents said:

          ‧ Forty-eight parents (87.3% of the respondents) noticed that their children looked forward to going to the programming class every morning.

          ‧ Fifty parents (90.9%) reported that their children spent more than an hour everyday working on programming assignments at home. Some students, according to their parents, even spent the entire afternoon and evening trying to add as many sophisticated features to their programs.

          ‧ Forty parents (72.7%) reported that their children had mentioned that they wished to learn more about programming in the future.

          So I guess your saying that programming will become unimportant might not be true. Sure, not everyone will become programmers, but I think at least a quarter of those kids will become so.
      • Oct 2 2011: That is a very good point, but what I am trying to say is that it will most likely not cause a revolutionary change, Maybe something will change but not revolutionary.

        "And besides, some students don't like chemistry or art or biology or whatever, but they still have to take it."

        That kind of proves my point. They made chemistry and biology part of the curriculum, but it did not create a huge revolutionary change to where everyone becomes a scientist. I do believe though that some(limited) amount of change will definitely occur if the study of applications is replaced by programming.
        • Oct 2 2011: "They made chemistry and biology part of the curriculum, but it did not create a huge revolutionary change" I have to disagree on that point. Although not everyone becomes a scientist, can you imagine how many biologists or chemists or engineers we would have without making them part of the curriculum? My guess is less than a quarter of the number we have today.

          And besides, a programmer doesn't have to work as a programmer or major in IT or computer science or anything like that. A programmer is simply a person who likes to program.
      • Oct 2 2011: "...a programmer doesn't have to work as a programmer or major in IT or computer science or anything like that. A programmer is simply a person who likes to program." You have a very good point here. I've enjoyed debating on this topic with you it is a very interesting concept.
  • thumb
    Oct 1 2011: Whoa dude you're only 16?!?! ur a geeennuiussusus!

    However, from what I have understood, I agree.
  • thumb
    Oct 1 2011: HI Nawaf,
    I am not terribly knowledgeable in this field but as I have lived through several computer eras my question would be this. Can we be sure that what we teach these kids today will be the viable and relevant computer language down the road?
    If I had insisted all of my children learned Dos I am not sure it would have been worth the time and effort that it took to learn it and if I consider all that the time to learn it might have misplaced in other learning I decide that it really wouldn't have been worth it.
    I look forward to reading your answer to my question.
    • Oct 1 2011: I'm also not knowledgeable in this field. Like I said, I'm just a sixteen year old guy. The only thing I know how to program are simple commands like a "Hello World!" message.

      I'd first like to note that DOS is not a programming language. DOS is an operating system that uses a set of typed commands. These commands are very different from programming languages.

      If a person learns a programming language, it is much easier to learn other programming languages, since most languages share basic concepts and many share syntax. New programming languages are made by those who know how to program using the old programming languages, so naturally, they won't differ to an extent that it will be hard for a programmer to learn.

      And besides,I don't think most popular programming languages get replaced fast. C started in the 70s and it's still used today; and many widely used languages use much of its syntax (like C++, which started as an enhancement to C, and Java).
      • thumb
        Oct 1 2011: Thank you Nawaf,

        Whether you are 16 or 80, I hope that you will always feel welcomed and that your opinion is valued here on TED conversations. I enjoyed your response to me and I appreciate the clarification. In a previous post on another topic I suggested that all kids should learn more than one language and I included computer languages among them because not everyone is interested in linguistics.

        If you believe that these languages will continue to be useful to the students who study them for some long time to come, I can fully support your idea. Thank you for educating me.
  • thumb
    Oct 1 2011: Nothing should be "SHOULD" for kids.
    Only thing should be done is facilitating their learning process following their course of interest and curiosity. At best we can try to make them curious about with out killing thier natural interst.
    • Oct 1 2011: I may have misunderstood you, but I think school isn't for "facilitating their learning process following their course of interest and curiosity." That's what college is for. School today (whether we like it or not) isn't based on electives and following interest; it's about what educators think all students should know in their lives and to have the sufficient knowledge to choose their course of interest in college.
      • thumb
        Oct 1 2011: Currently neither school nor college nor university bother to understand or facilitate students interest or curiosity. Those are just certification machine.

        My post was in response to your main premise which itself starts with "Should we teach..........." that gives an impression of ignoring kids curiosity /interest which already happening......why need to burden kids more with another SHOULD or MUST from our side while schools are already doing enogh to burden them ?
  • thumb
    Sep 30 2011: Why is this "either - or"? Can we not do both?
    • Oct 1 2011: Since they already know how to use the programs whether or not they are taught at school, I don't see any point of wasting their time and teaching them something they already know when they can spend their time learning something more beneficial, like programming. I think kids should only be taught how to use programs they may need in the future but they don't use them normally as kids, like databases (when they go to highschool).
      • thumb
        Oct 23 2011: Because not everyone will require programming skills to manoeuvre through life. Frankly, I have had co-op students who really could use better skills at using the programs, never mind programming.

        As long as the teachers cannot use the programs proficiently, the students won't get the depth of knowledge either - except for that small segment who explore beyond basic functionality out of internal drive and curiosity.

        I say this as someone who does program and who studied logic (formal languages) out of a fascination with them. Not everyone has the interest or the inclination - and to force them would be as wrong as not allowing someone who does have the inclination to explore it.
        • Oct 24 2011: "Because not everyone will require programming skills to manoeuvre through life." Just like not everyone will require physics, biology, or chemistry. That applies on almost all classes. It's not about what they require. It's about what will benefit them greatly.
          You're not looking at the bigger picture. If an entire generation knows how to program, and they are using programs every day since childhood, imagine what would that cause. It'll be a revolution. Look at the thousands of programmers now who are programming for free from their homes. Just look at the mod and white hat hacker communities, from Linux to Android to Kinect to practically anything that uses code. The things done by those communities are already amazing. Now imagine the possibilities when thousands of teens join in.
          As for interest and inclination, they already teach programming to all students in some high schools. All I'm asking is that they teach it more and at an earlier age. And I actually think many who believe they don't like it have never tried it. Look at the statistic I put in my other comment. There are more kids that would like programming than we think.
  • thumb
    Sep 30 2011: Yes, It does seem like schools are teaching children to be functional illiterates when it comes to computers. If you haven't yet you should check out some read some Douglas Rushkoff, who is writting a bit about this and the implications. Here's a clip, enjoy.
  • Sep 30 2011: Yes I agree that we need to encourage kids to be creative at school and programming is one way to do so.

    For younger kids we don't necessary need to teach them Java but we can start with simple programming languages such as

    Scratch (

    and other languages:

    Java can come later on?

    • Oct 1 2011: I'm sorry. I should've clarified the part when I said "they usually teach a simplified "kids" language which uses drag-and-drop blocks."
      Thank you for bringing up Scratch since that's exactly the language I was thinking of. It's a simplified kids language which uses drag-and-drop blocks. Many adults seem to think that kids will not be able to easily comprehend or will get bored with using more complex languages, so they go to simplified languages designed for kids like Scratch, Alice, Lego Mindstorms (which I've used myself), and Phrogram.

      The thing is, they can. 5th and 6th graders have the ability to program in more advanced programs like Visual Basic. Non-programmers might see all the code and think it's hard, but it isn't. Here's a study done in Tibet about this subject:

      Let me sum it up: a study was made on 5th-7th graders (mostly 6th graders) where they were taught three programming languages: Stagecast Creator (No code typing required), HANDS (the code uses English-like statements) and Visual Basic.
      Here are some results:
      -When asked about how much they liked each programming package immediately after they learned it, the students gave 4.18 (out of 5) to both Stagecast Creator and Visual Basic, whereas HANDS received a rating of 3.52.
      -After the students have learned all three programming packages, they were asked to pick their favorite programming package. Forty-one students (56.9%) went for Visual Basic, 26 students (36.1%) chose Stagecast Creator, and the remaining 5 students (6.8%) went for HANDS.
      -Forty-eight parents (87.3% of the respondents) noticed that their children looked forward to going to the programming class every morning.

      HANDS and Stagecast Creator are two examples of a simplified kids language. According to this study, kids prefer the more professional language (Visual Basic).

      If simplified kids languages are taught, I think they should teach them in 3rd-4th grade.
      • Oct 3 2011: Thank you Nawaf for the information. You seem to have a good understanding of the various options.

        I plan to teach my daughter programming languages soon and let her experiment with robots. If school can afford it, robots are a great way to let students work in teams to try some real world tasks.