Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I'm looking for easy, accessible ways for young kids to make and see code work.

My memory is being 6 or 7 and being shown by a high school babysitter how to make very simple BASIC programs on my Commodore 64. I could quickly make my own programs. They generally just incremented a variable by some value, displayed it, and looped (with a GOTO statement !), until manually killed.

Very simple stuff, but it was amazing for me. I want to be able have a similar or better experience for my kids. However, they won't be able to do much with directory structures, command lines, directives, etc.

What's the best way to make my kid a coder?

share|improve this question

closed as primarily opinion-based by Excellll, Canadian Luke, Keltari, Carl B, Sathya Jun 20 at 5:36

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

    
Last summer I taught a Lego robotics class. It was amazing. The projects are fun, it hooks up to a laptop easily and the programming is with blocks of images that you put next to each other to form a sequence. It wasn't a great insight into coding from our perspective, but it will enforce logic and spark interest in robotics, computers and programming. –  Wutnaut Jun 19 at 19:56
3  
Here might be a good start: Stack Overflow answered questions containing 'introducing children to programming' –  Michael Kjörling Jun 19 at 19:59
    
Following up my comment: I taught elementary students and the specific kit we used was WeDo (education.lego.com/en-us/lego-education-product-database/wedo/…). At times, the older kids looked bored. If this is their very first intro to programming and they're younger than 4th grade, I'd get them that. Alternatively, Mindstorms looks pretty amazing and more advanced, but I haven't used it myself. –  Wutnaut Jun 19 at 20:02

14 Answers 14

Maybe you could look into Python's Turtle module and this educational interface. From the Python reference:

Turtle graphics is a popular way for introducing programming to kids. It was part of the original Logo programming language developed by Wally Feurzig and Seymour Papert in 1966.

Imagine a robotic turtle starting at (0, 0) in the x-y plane. After an import turtle, give it the command turtle.forward(15), and it moves (on-screen!) 15 pixels in the direction it is facing, drawing a line as it moves. Give it the command turtle.right(25), and it rotates in-place 25 degrees clockwise.

By combining together these and similar commands, intricate shapes and pictures can easily be drawn.

From a first glance, it is on the heavy side (it has several commands, so it may be hard for a child to learn all of them) but the instructions are lexical (i.e. if you want the turtle to move 100 pixels forward, type forward(100) into the shell). With little code, you can do stuff like this:

turtle star

The interface I linked (PythonTurtle) seems more directed to children, as for the screenshot:

PythonTurtle screenshot

share|improve this answer
    
LOGO looks like it would be a good transition after scratch... do graphical drag-and-drop programming in Scratch, and then move to simple typed programming with LOGO. From there, Procesing.org? –  baum Jun 19 at 22:58
    
When I was a kid, on the Apple II computers we had at the time, LOGO was what was on them. It's really good for kids because it immediately teaches you that the order in which you tell the "dumb" computer to do things is very important, and you can immediately see the effects of what you do. –  ultrasawblade Jun 20 at 1:34
    
I've never used PythonTurtle, or taught a kid to program, but I do recall in elementary school, first grade, we had a computer bus (a school bus outfitted with a dozen or so Apple II's, that would drive around the county and visit once a week. Turtle was amazing and I had SO much fun using it! It was my first introduction to computers, and most likely put me on the path that I chose in life, (computers.) I wanted to be a dumptruck driver before that. :) –  beeks Jun 20 at 2:02
    
I started with LOGO as well! I remember the turtle! –  Ranhiru Cooray Jun 20 at 2:05
    
That takes me back. I remember the computer buses and Logo, but it came in a bit later for me (more like 10 years old). I had no idea it was still kicking around. I'll have to look at it. –  sudoodus Jun 20 at 4:45

I started with scratch (scratch.mit.edu) when I was about 12. Now, I teach classes in Scratch for kids as young as 5, and they do great with it.

The nice thing about scratch is how easy it is to do amazing things: the environment takes care of a lot of the lower-level components for you, and it is overall very intuitive with its English-like syntax.

Later, as I moved on to python, C, etc., I remember being amazed at the simplicity of the language: most of the animations/games I wrote in Scratch had almost no variables; there is default support for parallel tasks; keyboard, mouse, video input; sound & video output: everything is just taken of for you.

I highly recommend it.

share|improve this answer
    
I started with JavaScript. It's not so much for kids, but it's easy, forgiving and flexible. –  Tomáš Zato Jun 20 at 1:15
    
true, but I was thinking that it would be better to start with a drag-and-drop language — get the concepts down — then move on to typing (javascript, Khan Academy Language, LOGO, etc.) programming language. –  baum Jun 20 at 1:38
    
Never heard of it - I will have to try (the site is down presently, btw). –  sudoodus Jun 20 at 4:46

You could take a look at SmallBasic (http://smallbasic.com/) from Microsoft. It has a very simple Basic syntax and a quite good auto-complete editor that gives a lot of help while discovering the functions of that language.

share|improve this answer
1  
Yes! SmallBasic is great, I've learnt so much from it. I started programming with SB at 12, and nowadays I'm 16, coding mostly in Python and C#. It's a great learning resource, and the forums and Facebook group (SmallBasic Enthusiasts) is very friendly, even for people with limited knowledge in English (as is my case) –  Kroltan Jun 20 at 1:06

This is off topic, but Ill give an answer:

You might want to try Karel the Robot. Karel is a very simple, yet fun way for kids to learn the basics of programming. You use a limited set of functions to move a robot through a maze. It teaches logical thinking and problem solving. Karel can't turn right (or is it left), so how do you get around that? 3 lefts! Its made with kids in mind, but good for any age.

share|improve this answer
    
They used this to introduce us to Java at ČVUT. –  Tomáš Zato Jun 20 at 1:11

I'd highly suggest Scratch like @baum, but I'd like to add a little. The first thing anybody will notice is that it's a visual language: you snap together command blocks like legos, forming scripts, which can then be dragged around and executed at will. You mostly use the mouse; the keyboard is only used for filling in numbers and strings in said blocks. The entities, called Sprites, execute the scripts totally independent of each other, so you don't have to worry about threading. Scratch also has turtle graphics, which IIRC originated from LOGO, a simple language aimed at beginners.

Overall, it's a very low floor but also a low ceiling, which works out pretty well. You see your work very fast, but after a year or two (at least for me), you become too advanced for it, at which point you're reading to move on to a programming language. Personally, the first real coding I ever did was playing around with Scratch's Smalltalk source code. It's a great learning tool.

You could also look into the Kodu Game Lab on the Xbox 360, but I don't know anything about it.

share|improve this answer

Along the lines of the turtle-based programming environments, I'd like to suggest a board-game analogue: Robot Turtles. The idea is that a turtle (represented by a card) needs to navigate its way through a maze (the board, with castles and other obstacle tiles laid out in the grid) to reach a goal (a "gem" tile). The child is not allowed to touch the board, but submits a "program" in the form of a sequence of instruction cards, which request you to advance or turn the turtle.

It's great fun for younger kids. The advantage over directly programming a computer is that the board game is highly interactive. You get to make silly robot noises ("Meep!"), make fun of buggy programs ("Bonk! Bonk! Bonk!"), suggest strategies, and celebrate in successes, making you an active participant in the child's learning experience.

share|improve this answer
    
I like the concept. Young kids love board games. Analog interface. –  sudoodus Jun 20 at 4:53

I would like to suggest the great alternative. Robot programming! The object oriented C++like language in full 3D gaming environment. It's funny for children from 9 to 65! Colobot This is generic experience, so kid can proceed to any language he wants.

The game starts from the basics like method calls (robot.turnLeft), control structures, loops. There is different types of robots like transporters, builders, attack units. Every robot should change it's battery when low. Later, tasks become more challenging.

share|improve this answer
    
Is this something specifics, or actually robotics? The problem I have with robotics, is that it should really be for advanced users. The interface and poorly-defined environment make it so difficult. Even very sophisticated robots come off looking simplistic. –  sudoodus Jun 20 at 4:49

Scratch is good. If you have an iPad, Kodable is worth a look. If you want to spend some money on something real, take a look at Sphero. There are tons of apps on iPads & Android to control these devices, some of which are code based.

share|improve this answer

Python is probably the best choice.

The other answers here mention some languages that are specifically designed for beginners to start programming, but other than playing around they won't do much with them, where as Python is actually used to "work" rather than just play, for example some very big websites like Instagram use Django, a Python-based web app framework.

So using Python will both introduce them to programming and leave them precious knowledge that they can reuse in the future to create powerful applications if they choose to become developers later.

share|improve this answer

If you've got lots of money, you can get them lego NX Cube. It has graphical programming interface by default.

It also has support for Not Exactly C (download here) language when they get older.

We used this in a highschool programming competition.

share|improve this answer

I am 13 and I know lots of Codes....

HTML

CSS

JavaScript

PHP

C++

For HTML and CSS I just did the basics. I wrote the code using notepad, saved it, and opened them in Google Chrome and used DevTools to see what errors it threw. I enjoyed seeing the outcome when the code was finished, and I find coding to be fun (like most coders i come across). I did a similar thing using JavaScript; it was fun to see my website become dynamic. (I coded a random joke generator). Eventually, I coded an entire website (15 pages, 3 months work) (never published though). I know some people who were coding PHP and I decided to learn it. This was difficult, especially the OOP, but eventually I understood the language. Using the Codecademy console, I coded some cool PHP scripts. Seeing the result of the code execution is always the fun part; a turtle as part of the output doesn't make it any more special.

C++ was hard because of the complexity (data types, casts, compilers, etc.) Currently i'm coding a C++ program and of course it's fun to see it execute.

(w3schools offers great tutorials/reference/try-it-activities for HTML and CSS. Codecademy offers excellent JS and PHP tutorials which is centered around try-it activities. cplusplus.com offers a great tutorial and reference, plus plus it has a C++ forum)

Really, to me at least, the best way to learn to code is to do it yourself, and the best way to make it seem fun to a child (Let's say 7) is to have them start coding and show them the output.

A young child will find anything to be cool. If he/she can learn to code a JS "Hello World" program, then he/she will say "cool". Then add a few setTimeout's and he/she is amazed.

In my opinion, hands-on learning and writing code is better than a turtle game. But no matter if you use a turtle game or writing from scratch, if the child sees the code, the child will want to learn more, do more, write more, and experimenting with code.


I have a friend who started with python; It is a good introduction to web coding and scripting. But I believe that the first code language you learn should be HTML, followed by CSS and JS. (The three languages every web developer should know). Then other languages like python, PHP, and C++ should be learned after learning the other 3.

share|improve this answer
1  
To be nitpicking, HTML and CSS are no programming but markup languages. They get you a good feel of what syntax is, though. –  Bergi Jun 20 at 3:03
    
To be even more nitpicking, JavaScript Python and PHP are not programming but scripting languages. Lol. They teach you the basic structure of a program though. Like variables, control flow, functions, etc. –  Homberto Jun 20 at 3:39
3  
Well, scripting languages are still proper programming languages, all the three you mentioned are turing-complete general-purpose languages. –  Bergi Jun 20 at 4:04

I highly recommend using CodeHS. It's free to try their first module, which is enough for most kids to decide if programming is for them. I used it to teach two students and they both really enjoyed it! It's powered by Karel too but its a full-featured course with lessons, examples, and videos. And its intended for use by teachers so you can track the progress of your students as they go!

share|improve this answer

This is a really interesting question.

As others have said, Scratch is a fantastic the first step. Programming Lego mindstorms is also useful in the beginning.

After that, its a little harder to choose.

As a second step:

  • Python is a great way to transition from graphical languages to text-based ones.
  • Javascript Could also potentially work as well.

But beware - kids will have questions. And if you don't have answers, its possible the kid will get discouraged and walk away. I was a kid not too long ago (it seems), and was always frustrated when my Dad wasn't fermilar enough with the language to help me when I got stuck.

I also can recall messing with a bit of HTML when I was about 9 (I was showing off to my 4th grade teacher how I could change the background color of a webpage).

Also, look for science museums in your area that may be offering programming workshops or summer camps, as they are a great way for kids to jump into programing with other kids.

For the next step, you might want to tell your kid about the various platforms available and see if any sound interesting to the kid:

  • iOS wasn't my choice, but its what I ended up persuing, and I'm glad I did. I was lucky enough to have access to an iMac in my houseold, and was gifted with an iOS programming book, which I found very helpful, and I have continued developing for this platform ever since.
  • Another choice might be developing for the web. If you show your kid HTML (or in my case, I taught it to myself), and they enjoy it and like the prospect of having their own website, it might be good to just let them continue with HTML. they might be amused to learn how to add Javascript to their website, or add CSS to style their website.
  • Potentially show them C# and the whole Windows development thing (If you cannot tell, I have zero experience in that field)
  • Java might be a fantastic choice if your child is into a game called Minecraft (like most children are). Java can help them customize the game by adding client and server features through modding.

But again, I will stress that kids will have questions, so it is very helpful if you know some of the language that your kid is learning. That was the most frustrating thing for me when I was learning a new langauge or concept.

I think kids learning to code is fantastic. I currently fall in the 13-18 age group, and I started with Scratch when I was about 7 or 8, and still love programming today. It's one of the few things that can be carried on from childhood into grade school, college, and beyond.

share|improve this answer

Javascript! I'd recommend Khan Academy Computer Science (Khan Academy has good math stuff too).

You get a textarea on one side and a canvas on the other - typing into the textarea gives instant feedback in the canvas. They have audio tutorials on top of the system with real-time code modification (basically a video) and fun challenges.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.