Welcome to Tesla Motors Club
Discuss Tesla's Model S, Model 3, Model X, Model Y, Cybertruck, Roadster and More.
Register

Coding practice for kids?

This site may earn commission on affiliate links.
Hi, all-

Was doing some work in home office this morning when one of my sons (8) came in and asked if I could get off the computer so he can practice "coding". Apparently, they have been using a website called code.org at school and making simple games (star wars, minecraft, etc.) I watched him run through a couple and was impressed. So, to my question, knowing many of you are far more computer-savvy than me: Are there any other coding websites you'd recommend? My google search turned up about 25+ sites with some free, some not, and just wanted some expert opinion before diving in. Don't mind paying for service long as it is worth it.

Thanks for any help!
Claire
 
Not sure if this is exactly what you're looking for, but TopCoder used to have "Single Round Matches" which were basically 3 small coding problems that people did in 2 hours. They had some UI where you could run tests on the code to see if it passed the test cases. I haven't looked at their site in many years, though, so I'm not sure how much they've changed. You don't have to participate in the contests as all the historical problems with solutions and things should still be up.

Maybe this is too advanced but USACO has some good online training resources but the problems are more geared for top high school level students so maybe that's something for the future more so than now.
 
Last edited:
You are the ultimate mom. I'm going to introduce Scratch to the girls today. I'll have to be careful how to introduce it. It would be more helpful if a friend of theirs suggested it to them. But it looks cool.
I'm sure my kids will learn to program some Minecraft mod, while yours develop the next great app, and you retire in luxury.
 
I'm a software engineer and have used and taught programming with Scratch for a few years, but am kind of ambivalent about it. On one hand, it's very easy to get started and there is a huge community for it. However, once beyond basic programming, IMHO it tends to develop very bad programming practices. For example, there isn't any way to write your own functions which leads to really awful code for anything beyond the simplest program. There are also some design issues with Scratch that can cause very mysterious behavior (race conditions if you're a geek).

Alice is more advanced, but also leads directly into real programming and has a lot more possibilities as it's a 3D virtual world.

Scratch is definitely easier to get started with, but Alice, while a bit more difficult is a much better platform for the longer term IMHO.
 
Gosh, everyone, thank you for all this! (and the mom-props, Mike_HBurgVA)
I played with Scratch last weekend and found it fun. It is probably good enough for me, but as RDoc mentions, may become too elementary too fast for kids with plasticity. Will check out Alice tonight. (that sounds a little funny :)

- - - Updated - - -

Be sure to regulate screen time for young ones. Too much can be very detrimental to the brain's development.

Even Techies Limit Their Children's Screen Time

Yes, but how will I ever get any work/laundry/sanity restoration done? (kidding, kidding) Actually, the fact that we limit it so much makes them hunger for more. Coding practice, in my opinion, is good media distraction.
 
Last edited:
I often wonder if all the emphasis on coding is misplaced.

I taught myself to code in C when I was in grade school, using old manuals I'd found. Most of the stuff I coded were inane games and rudimentary simulators. While I was able to learn the language fairly easily, the code I produced was terrible quality, because I made up solutions as I went along. Even when I took a class in C++, there was only cursory attention given to design. The assignments were simple enough that they usually had only 1 or 2 key algorithms and some text-base interface for user interaction.

It wasn't until college that I learned OOP, and learned to think about the big picture and how different parts of a system would interact and affect one another. Even as a dumb ("unwise") teenager, everything made so much more sense when design was taught concurrently with code. The fundamental question of what a computer program is (in general terms, an abstraction of relevant algorithms and data) made a difference in the way I approached coding.
 
I often wonder if all the emphasis on coding is misplaced.

I taught myself to code in C when I was in grade school, using old manuals I'd found. Most of the stuff I coded were inane games and rudimentary simulators. While I was able to learn the language fairly easily, the code I produced was terrible quality, because I made up solutions as I went along. Even when I took a class in C++, there was only cursory attention given to design. The assignments were simple enough that they usually had only 1 or 2 key algorithms and some text-base interface for user interaction.

It wasn't until college that I learned OOP, and learned to think about the big picture and how different parts of a system would interact and affect one another. Even as a dumb ("unwise") teenager, everything made so much more sense when design was taught concurrently with code. The fundamental question of what a computer program is (in general terms, an abstraction of relevant algorithms and data) made a difference in the way I approached coding.
IMHO, this is the best reply by far, and is a far more comprehensive reply than my kvetching about Scratch teaching bad coding habits. The kids I've helped who started coding on their own, not to mention the college freshouts I worked with, had some of the worst coding habits imaginable, and it proved very difficult to break them of it. Once someone starts hacking and actually gets code to do something, convincing them that good design and structure is really important becomes quite difficult.

Having said that, I'm unaware of any source for good coding design and structure instruction, apart from an experience programmer. Most of the coding examples online are dreadful. Sorry to be so negative, but there is a lot of very poorly conceived and structured code out there and more being produced every millisecond!
 
Having said that, I'm unaware of any source for good coding design and structure instruction, apart from an experience programmer. Most of the coding examples online are dreadful. Sorry to be so negative, but there is a lot of very poorly conceived and structured code out there and more being produced every millisecond!
That's because there are a lot of poor programmers out there. :wink: Seriously, I've worked with some people who should be downright embarrassed to take a paycheck for the junk they've cranked out.

Now how do you teach kids to be good programmers? Beat me. Probably takes guidance from talented adult?
 
Now how do you teach kids to be good programmers?
I think the answer is to show them good code. And yes, the short samples found in books and the 'net usually aren't that.

If I were to run a beginning Univ level C coding class, I'd pick a simple well defined and well written utility (gnu's "touch" for example) and have 'em read code. Do a full code review. However, before they did that, I'd probably have them read the man page as a specification, and have them write their own version, then do the code review of the gnu version. It's always a learning experience to see how other's solved the same problem you just did.


--Woof!
 
IMHO, this is the best reply by far, and is a far more comprehensive reply than my kvetching about Scratch teaching bad coding habits. The kids I've helped who started coding on their own, not to mention the college freshouts I worked with, had some of the worst coding habits imaginable, and it proved very difficult to break them of it. Once someone starts hacking and actually gets code to do something, convincing them that good design and structure is really important becomes quite difficult.

Having said that, I'm unaware of any source for good coding design and structure instruction, apart from an experience programmer. Most of the coding examples online are dreadful. Sorry to be so negative, but there is a lot of very poorly conceived and structured code out there and more being produced every millisecond!

Now how do you teach kids to be good programmers? Beat me. Probably takes guidance from talented adult?

There is probably no substitute for mentoring, preferably mentoring from several different perspectives over time. I believe Steve Jobs said something to the extent of engineering/design being the intersection of sciences and the humanities. I used to think he was full of it, but I've appreciated that view more in recent years.

Part of the reason I think this is so difficult is because there are so many ways of coding a system to create a product or solution. What makes a system divided into logical components? Does a particular inheritance hierarchy make sense? What is easy for others to understand? What is easy to upgrade/maintain? Outside the realms of algorithmic efficiency and resource utilization, much of this is subjective and difficult to quantify.

For kids, I would say it makes sense to teach design and evaluation skills first. Lego sets come to mind. What makes a particular Lego set good? Perhaps the pieces have flexible application. Is the set too simple or too hard to build? Is the assembled set fun to play with? Or does it fall apart too easily (yes, in the distant past I owned a big set or two that was fragile and could fall into pieces far too easily). One can do this with any number of objects: tablet computer models, headlamps, cars, and so forth. What design choices resulted in which consequences?

On the coding side, I would focus on human readability. I have worked with people who enjoyed writing code that was super duper compact, but difficult for others to quickly understand. Simple things like following variable naming conventions, using proper indents, and adding comments often seem stupid to new coders, but they make a difference to people who have to maintain the code months or years down the line.

Finally, I think that it helps to introduce the intersection of hardware and software early on.

The machines that run the code are black boxes to most kids. Explaining memory, and how code objects are instantiated, referenced, and deleted, will give a better understanding of what happens when a computer program runs. While this doesn't have much impact for a kid writing small programs on a computer with 4 GB of RAM, it might make a difference in the future if that kid is many years down the line creating systems that run into resource constraints.
 
Thanks, again, to all of you for your insight- just what I am looking for. I am a code-naive parent trying to encourage my kids who are showing interest. Twin boys, age 8, who love getting lost in video games, but once I explained that they could have the ability to control those games by programming, they really took off. Sadly, I don't have the (personal) hardware to mentor them properly (perhaps I need to take up a new hobby in coding). I am up to my ears in lego's, technics, new designs for starships, weapons and pod-racers and Santa's bringing Lego Mindstorm for Christmas. I always knew these kids would be smarter than me, just didn't think it'd be so soon. :p