Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Which programming language would you want to teach to a very young person (5-7 y/o)

  1. Nov 14, 2017 #1


    User Avatar
    Gold Member

    Which programming language would you like being taught if you were a very young person (5 to 7 years old), as a first programming language?
    Worded differently, which programming language would you like to teach to your son/daughter if he/she was that age?

    I've heard about Scratch and Logo. Then there's Python and Julia (not a general purpose language but may have a nice future in science and who wouldn't be a scientist?)
  2. jcsd
  3. Nov 14, 2017 #2


    Staff: Mentor

    Probably scratch because of its visual style.

    For older kids I’d go with Processing.

    For really old kids I’d with go get a job. :-)

    It really depends on interest and the fact no one programming language will be right in all cases. Expect to learn a few. In my case the major ones are java, python and bash scripting.
  4. Nov 14, 2017 #3
    I have a 6- almost 7-year-old and I can't get him to sit still enough to teach him programming. However, if he was sufficiently curious and patient (a lot to ask from my 7 year old), I might start with Javascript. I know I'm definitely in the minority, but it's easy to start with and if you have a browser you have a basic runtime environment. You would definitely have to ignore best coding practices and functional aspects of the language, but it's enough to show how you can build "real" things they've seen on the Web. That was the main thing that got me into programming: creating things just like real professionals.
  5. Nov 14, 2017 #4


    Staff: Mentor

    Look at Scratch and then decide if you want to hazard Javascript. For Javascript the kid needs to be at least in 4th grade and comfortable with basic math and there's so many things that can make him/her frustrated.

  6. Nov 14, 2017 #5
    Agreed. Scratch is much more accessible. Maybe I'm expecting too much straight out of the gate with the young'uns. I just remember starting with C++ at 10 years old and wanting to do something "real" and not liking things like this that were very limited in their capabilities.
  7. Nov 14, 2017 #6


    Staff: Mentor

    Yes when I was a kid, my uncle taught me Fortran using the user manuals with no regular access to a computer to run it. I had to wait until 12th grade where I could use it.

    BASIC became popular among kids with the advent of computers.
    Last edited: Nov 14, 2017
  8. Nov 14, 2017 #7


    Staff: Mentor

    There used to be a thing called Turtle Programming for teaching kids. I just checked and found an iPhone/iPad app called "move the turtle" that does the same thing.

    5 is a little young, but I recall in the 80s getting a bunch of pubescent pre-teens interested in the game Robot Wars. They loved that because of the competitiveness of killing their best friend's bot, or the humiliation of being killed. They also learned wonderful lessons in addition to the programming such as feeping creatureism, managing resources, and thinking strategy in addition to tactics. Those guys (they were all boys) continued their Robot Wars throughout college years via email. Two of them got PhDs in CS.

    According to this wiki article, Robot wars it is still alive and kicking.


    Remember, that the goal with beginners is not specific programming skills. They should be taught that they can turn ideas into code and to develop a passion for doing so. I used to teach beginners and I thought of it not as "into to programming" but rather "recruitment of future programmers"
  9. Nov 14, 2017 #8


    User Avatar
    Gold Member

  10. Nov 14, 2017 #9


    User Avatar

    Well there's the programming languages specifically designed for children, like Alice and Scratch and Logo (which you mentioned). I can't comment on these since I've never used any of them.

    Then there are the "serious" (used by adults) programming languages which a child may still be able to learn to use. Probably the important things here is that the language should have a clean design and support interactive programming. Python is OK for this (it includes a REPL). Some other languages/environments are even better at this than Python and might be worth considering:
    • Pharo (a fully graphical Smalltalk implementation). This is a simple but powerful and live "pure" object-oriented language with probably the best support for interactive development I've seen in any language. (E.g. you can interactively look up existing classes/objects in the class browser and clone or modify them.) Tutorial here.
    • Portacle (a self-contained package of the SBCL Lisp implementation and Emacs configured to work like an interactive IDE).
    I don't know if these would be suitable for a 5-7-year-old but it would be an interesting experiment to try to find out. (If it worked the child would get a very good exposure to the programming language landscape very early: according to this visualisation Lisp and Smalltalk are two of the three programming languages that have had the biggest influence on other programming languages.)

    Both of these as well as most other languages worth considering are completely free, so there's no obstacle to downloading and trying out a few of them.

    I'm not so convinced about JavaScript. From what I know about it it is a capable language but also quite quirky.

    Actually Julia was designed to be a good general-purpose language. It includes features like Matlab-like array notation which are obviously meant to appeal to scientists, but even without these it is meant to be a "serious" language with capabilities on par with Python and even Lisp. (Some Lisp programmers have gone so far as to call Julia a "Lisp dialect". I think this is pushing it a bit but Julia certainly includes features intended to attract Lisp programmers.)

    I wouldn't recommend Julia to a beginner though (of any age), mainly because it is still under active development. I'd go with something that is more mature and better established for a first language.

    My first exposure to programming was seeing Basic loops done like this:
    Code (Text):
    10 I = 1
    20 PRINT I
    30 I = I + 1
    40 GOTO 20
    I was probably about 7 or 8 at the time. Using gotos like this is of course considered bad style nowadays but I wonder if it could actually be beneficial for beginners. I've seen more than one beginner a bit mystified by loops and I wonder if seeing a loop expressed this way would give them a better grasp of what the do/for/while loops in other languages are actually doing.

    One of the reasons I was tempted to suggest Common Lisp above as a possible beginner language is that it is the only really high-level (comparable to Python) language I'm aware of that isn't obsolete and has a goto feature similar to unstructured Basic and Fortran. (You can easily transliterate the Basic code above into Common Lisp, and you can also learn that this is how Lisp's various looping constructs actually work by looking at their macro expansions.)
    Last edited: Nov 14, 2017
  11. Nov 14, 2017 #10


    User Avatar
    Gold Member

    Scratch would be the most effective.
  12. Nov 14, 2017 #11


    User Avatar
    Gold Member

    I wouldn't try to teach a programming language to a 5yo- a kindergarten child can't grasp logical arguments; and even if the learn to do it will be "destructive"... 7 maybe scratch...
  13. Nov 14, 2017 #12


    Staff: Mentor

    The thing about teaching kids is to show them by example. Logo was good at this, the commands were very simple. You just move the turtle around to draw a line, a square ... next draw a petal then a stem ... then make a subroutine to draw the flower ...

    They learn looping, sequences of commands and packaging commands to make their own commands and they build on that.

    They then can explore geometry and ever more complex drawings without the use of variables, data types and the usual suspects in real world programming.
  14. Nov 14, 2017 #13


    Staff: Mentor

    It seems that this thread has run its course. No new programming languages have been proposed for kids and that opinions vary widely on what to teach them, and so it’s time to close it out.

    There are many similar threads that you can read on this subject here at PF for more opinions and ideas.

    To summarize these ones are good for younger kids:
    - scratch
    - logo with turtle graphics
    - BASIC

    For older kids consider:
    - Processing and it’s choice of langs Java, python or JavaScript aka p5js

    For really enthusiastic students:
    - Java with Eclipse or Netbeans
    - C / C++ on Arduino
    - programming on the Raspberry PI
    - Lisp / Clojure

    There are numerous books for teaching kids specifically on Amazon and numerous videos on YouTube and khan academy and many other sites.

    Thanks to all who contributed here.

Share this great discussion with others via Reddit, Google+, Twitter, or Facebook