This article was originally written in 2015. It was rewritten on 9/6/2017 with links to new programs. Those are at the bottom of this article.
If I were to give one piece of advice to new programmers it would be to have fun. A popular stigma is that programming is a monotonous task where geeks stare at screens of gibberish day and night. But this is not true, except sometimes when you put off fixing a bug all week. Coding is creative, engaging, and fun.
In my case coding started with a love of video games and watching YouTube videos. When my mom saw how well I was doing on my own, she had me take a few online courses. The following summer she sent me to a computer science camp. After that I began to program nearly every day. Over the past two and a half years I have worked my way from student to employee with a company called Thoughtstem, http://www.thoughtstem.com/home, that offers workshops where mentors teach kids how to computer program. Last school year I took three classes at UCSD for Java, C/++, and app development. I worked hard and got an A+ and two A’s in those. Because of my performance in these classes, I was invited to attend the Stanford Pre-Collegiate Computer Simulations and Interactive Media program. There I learned from professors who are experts in this field while staying in the dorms with 19 other students who were also accepted into this program. We spent three weeks learning how video games are made and then working in teams of three we made our own game. Because I feel so fortunate, I want to give back, so I made this list in the hope that at least one student will become as passionate about computer programming as I am.
Many people use YouTube to learn how to code, and although YouTube is a good way to get started, your child will end up with many holes in their knowledge. This is one reason I recommend using YouTube as a supplement and taking a class or using a program for the core course. Below is a list of some great classes and programs to learn ranging from beginner to advanced levels of computer science.
If you have looked into your child learning computer programming there is a very good chance you have heard of Scratch. This is because it is a simple yet powerful tool, and it is a good place to start, although it will not teach a “language”. The reason to use Scratch is so your child can learn how to structure code, which is a very important skill. https://scratch.mit.edu
Touch Develop is a program that teaches you to make video games and apps. It is for beginners, but it uses actual computer programming. It is a very good program, and I recommend it to a higher age than Scratch. https://www.touchdevelop.com
Bitsbox is a program like Touch Develop, but it is much more simplified. Like Touch Develop, Bitsbox uses a real programming language, but it is geared toward a younger audience. https://bitsbox.com
RoboMind Academy is a program where you use programming to operate a virtual robot making it perform actions and other things. This is a good program if your child is into robotics, but I wouldn’t recommend it as a program for learning to code. https://www.robomindacademy.com
Hello Processing! is taught in a class type format. This program teaches students how to create digital art. It is interactive, even allowing students to run the programs they are writing as the techniques are being taught. http://hello.processing.org
Your child can learn to program using Minecraft. There are so many good programs teaching how to code with Minecraft, I can’t even list a fraction. My favorite, LearntoMod, is a great way to go. It has an easy enough interface that just about anybody can start, but it is a very powerful learning program. Not only that, learning with LearntoMod is fun. http://www.learntomod.com/ this is the link to the website, and here is an article about it, http://www.wired.com/2014/08/learntomod/.
Be careful though, your child might be telling you they’re coding when they’re playing the game instead, so try and keep them on track. Side note, you do not need Minecraft for this class. They designed a Minecraft clone that works with it.
Although LearntoMod is a good place to learn basics, it does not teach a coding language, much like Scratch. If you want your child to learn a coding language I recommend a course by Digital Media Academy (DMA) that teaches Java using Minecraft and Forge. https://www.digitalmediaacademy.org/teen-summer-camps/summer-tech-camps-for-teens/minecraft-modding-with-java/ This link will take you to the main page. After clicking on the link, press the tab that says “DMA online”. I recommend reading what they have to say on that page.
Code Combat is a game where you have to use code to complete tasks. It is an interesting approach to teaching programming, and in my opinion it is the most fun of all the programs on the list. Code Combat will provide your child with basic to somewhat advanced coding knowledge, and it has a bunch of languages to choose from, so your child can learn whatever he/she wants. https://codecombat.com
If you have an older child or your child has prior coding knowledge, I recommend something more rigorous like Code Academy. Code Academy is a free online class for computer programming that also allows the student to choose between many languages. It instructs the student to write a scripted code. When that is completed it takes the user to a different screen where they have to write the code they just learned on their own. The remembered code students write is how they advance through the game. https://www.codecademy.com/
If your child is an advanced student in coding, they are ready to move on to Project Euler. It is a challenge that will test your child in a way that my above recommendations do not. It is hard, but one of the most rewarding things I have done in computer science. To do these problems your child also must have a pretty good grasp of math. https://projecteuler.net/
The suggested programs are not in a logical progression. I can’t tell you what your child should start with or progress to because every child is different. Your child may be older than another or maybe they have some experience in programming. Some children are more into the artistic side of programming and some are more into the back-end tasks. You may think you know what your child will like, but there is a good chance that you are wrong. If your child does not like something don’t push it too hard, because there are so many other choices. If the programs I recommended don’t work out, I encourage you to find another. Programming is the universal language of tomorrow as math was of yesterday. Someday soon it will be an essential skill.
Happy coding 🙂
New programs: 9/6/2017
I am only adding two to this list. There are many more programs you can pay for. I am adding these two because they are free and well vetted.
Google has a free online program called CS First. It looks like you have to belong to a club or school at first glance, but that is not the case. You can set up a location by following the instructions laid out in the ‘CS First Club Locations’ section of this Help Center article. You can use the program without being in a club by going on to g.co/csfirst/curriculum.
Code.org is a non-profit dedicated to expanding access to computer science. Code.org even has a section where US residents can find a local computer science class, https://code.org/learn/local.
• This is not an exhaustive list. I only included those programs I have used. If you have a favorite not on this list, you can tell others about it in the comments. Please state the name of the program, a link to it, the age range or experience level you think it is geared toward, and why you and your child like it.
• Only personal testimonials, and no selling is allowed in the comments.