Programming for kids

Whining Civvy

Old-Salt
Does anyone know where I can find some good downloads to help my six year old son learn how to program computers? He's just started learning about tech at school and I'd like to help him get a bit ahead of the game, but I'm computer illiterate and will need some support. I've done a bit of googling but the array of offerings are dazzling and I have no idea which are reputable and actually good.

I've given him a user account on my laptop, running Windows 10, with MS Word and have opened up a (very carefully monitored) email account so he can write to my parents back in the UK, but I want to drop a few icons on the desktop so that he can access learning without using a browser as I don't think he's old enough for the dubious wonders of the internet just yet.

Any suggestions would be welcomed, along with advice on helping him come to grips with tech in a safe manner. I'm groping in the dark a bit here.

Cheers
 
The Lego Mindstorms toys are good, learn programming and build toys

Or a bit cheaper, get a Raspberry Pi starter kit and get them to learn "Scratch", a programming language designed for kids
 
The Lego Mindstorms toys are good, learn programming and build toys

Or a bit cheaper, get a Raspberry Pi starter kit and get them to learn "Scratch", a programming language designed for kids
I concur, Scratch is the was forward and there’s plenty of online learning material, all free.
 
The Lego Mindstorms toys are good, learn programming and build toys

Or a bit cheaper, get a Raspberry Pi starter kit and get them to learn "Scratch", a programming language designed for kids
I did this with my youngest Cousin. I'm slightly suspicious that I enjoyed this even more than he did and he loved it! :p
 
Does anyone know where I can find some good downloads to help my six year old son learn how to program computers? He's just started learning about tech at school and I'd like to help him get a bit ahead of the game, but I'm computer illiterate and will need some support. I've done a bit of googling but the array of offerings are dazzling and I have no idea which are reputable and actually good.


Six years old is very young. But not too young to start. Might need a particular approach though.

When you say 'program computers', that covers a very wide field. Some people do web development and build websites, some people build Apps for phones, some get in to the nitty gritty of the big bad world of DSP (Digital Signal Processing). At one end of the game, say web development, you don't need to be the brightest tool in the box (lots of predefined templates and boiler plate code to work from as a base), but at the other, say DSP stuff, you need to be very high IQ and super smart because you will be dealing with Physics stuff and a lot of Math.

I think the trick is to find out what he likes, what he's good at, and then after testing for aptitude, gently nudge him in that direction. Now has never been a better time to do this. The hard part is indeed boiling it down to what is hoped to be achieved. From there, a solid plan can be worked out. But at this age of course, it should involve a lot of fun and games to entice him in, and instill in him a sense of wonder for the wonderful world of computers.



I've given him a user account on my laptop, running Windows 10, with MS Word and have opened up a (very carefully monitored) email account so he can write to my parents back in the UK, but I want to drop a few icons on the desktop so that he can access learning without using a browser as I don't think he's old enough for the dubious wonders of the internet just yet.


I can understand you monitoring him and not wanting him to have access to the internet. And this is a tricky one because more and more the world of computing makes it kind of obligatory to be connected to get anything done, without the obvious drawback of not being connected and unable to access resources. But there is a way around this.

Computing does not start and begin with the internet. Computing and programming is not just about being 'hooked up' and 'online' all the time. There are so many things to be getting on with that in fact, these days, having a connection is just a distraction. Consider getting him his own machine, one without an internet connection. This means a computer with no wireless or one that can have the wireless deactivated. I think an old or second hand desktop is ideal. From here he can learn about components - he can learn computing from first principles, kind of thing. He can swap out hard drives, hook them up, install more RAM - all good stuff. He will be dealing with accessing hard disks and RAM in his programming endeavours. This helps build up a picture in the mind's eye, as these days, what with computers getting smaller and smaller, this stuff is hidden away, and also Virtualisation is a big thing as well, which abstracts things even more.



Any suggestions would be welcomed, along with advice on helping him come to grips with tech in a safe manner. I'm groping in the dark a bit here.


I say chuck him in the deep end!

If you get him his own machine, it gives him a sense of ownership and responsibility. It's also easier to make sure that there is NO internet connection without interfering with your computer. This gives you peace of mind as well. He can still access your machine for resources when needed, supervised of course. He can transfer stuff on a USB stick or drive. It'll be fun!

So, what do I mean by 'the deep end'?

Well, seeing as he is starting out and he probably doesn't know exactly the direction he wants to go in yet, I would nudge him in to the area of Virtualisation. You can get VirtualBox and VMware for free and very good they are too. With those on his own computer, he can then try out many different Operating Systems such as Windows or different flavors of Linux. No internet connection needed.

From there he can learn about installing to the hard disk and he can get a feel for what he likes. Some Linux distros have a very Mac type feel with big icons and an almost Smart Phone look and feel. He might like that. Or he might want to concentrate on the more popular and standard Windows by Microsoft. One thing is for sure, he will run in to problems doing this. But not frustratingly so. It's pretty easy to set up a Virtual Machine these days - lots of resources to show that. You could just download a few pages from a few websites and let him get on with it. He wouldn't need anymore information.

The joy and sense of achievement of setting up your own Virtual Machine is quite something and you can customise it to how you like with your own colours and your own pictures - something a kid would love! On the journey to doing that though there would be hiccups. And it's in those hiccups that we all really learn about computers. Necessity is the mother of invention ((c) Frank Zappa).

It's possible to learn how to program from a book or from a website, but sooner or later you will hit the wall and run in to a problem that if you don't have the first principles down, you will be a lot more frustrated and held back than you need to be. Start as you mean to go on.

A child of that age has a massive learning capacity. If he is hungry for it he will just drink it all in. He doesn't need to be pushed, just cajoled, his youthful curiousity will fill in the blanks.

This is why I think it would be good for him to learn about the bare bones to start with: Operating Systems. Running a Virtualisation program like VirtualBox or VMware is risk free. You can set up as many OS's as you like and if you muck it up you can erase it all and start again. No internet connection needed. No risk to burning out hardware. All free.

You would probably need someone to help out with this of course, and a good mentor at this age is invaluable. Maybe there is some kind of Computer Club where you are? Us old bods are more than happy to give of our free time to get someone up and running. Try to find someone. Not necessarily a tutor as such which will cost you, more someone you know (and trust of course) that will be happy to help out and perhaps is better paid with a nice meal and bottle of wine than hard cash as such. Consider this. Also if they are mentoring your kid, it's better someone you know than someone who answers an Ad in the paper, kind of thing.

By 'mentoring' I don't mean anything grand. Just someone that can help out when the wall gets hit (and it will get hit a lot) and generally point in the right direction. It could even be someone you know online. For example, it wouldn't take me long to provide you with links to all these resources for you to quickly download, but it's better if you have someone local who can be more 'at hand' when things go wrong. This may be the most valuable thing you can do towards getting your kid ahead of the curve and going in the right direction.

Programming computers does not exist in a vacuum. It's as much about who you know as much as it is about what you know. Sure, there are prodigies like John Carmack and whoever, but for everyone one of those 'genius' types, there is one that just had a decent enough IQ, a solid work ethic and was lucky enough to have have good 'mentors' around him.

So let's say you can get someone to help out a bit, even if only temporarily to get stuff set up and running, from there, once your kid has got his computer working nice and has settled on an Operating System he likes, he can venture out further.

This is important, because if he decides to program for Windows or if he decides to program for Linux/Mac/Unix type systems, it will be a very different experience. Some things are a bit more OS 'agnostic' though shall we say. And that is why I suggest his next step should be building his very own website. He can do this on just about any OS platform.

Now, a lot of this stuff might seem a bit mind-boggling for a kid, but don't underestimate brain plasticity at that age. You will know if he's not having fun and if this approach is not working. Like I say, this is the deep end, but with no chance of drowning...

And who needs the Internet when you can set up your own Web Server on your very own machine? This essentially mimics being on the internet and it is something anyone who does web development and builds websites does anyway as a matter of course.

When he makes a decision as to what OS he is going to go with first, he can partition his hard drive and split it in half: having one half for general computing and testing out stuff, and the other half for more mission critical stuff like programming, where he keeps things as straight as he can and just concentrates on the 'hard stuff'. This is just one approach.

The great thing about building your own website, and doing it on a machine that is not internet connected, is the fact he will learn about not just different Operating Systems, but he will learn about Servers and also Databases as a matter of course to completing his goal. And from there he will learn about Programming.

It's called the LAMP stack. LAMP (software bundle) - Wikipedia

The endpoint of that 'stack' is PHP say, or perhaps even Perl. Some people hate or love one or the other. But they are just tools at the end of the day. All programming languages are just tools in the box. And it's not the tools that maketh the man (though they help). A good chippy is a good chippy and a good sparky is a good sparky. And all bad workmen blame their tools, kind of thing.

Even if he decides not to go in to Web Development, he will still end up learning programming and none of what he has learned will be wasted.

Okay, this is probably way over the head of a six year old to start with. But that six year old will be a seven year old next year, and a ten year old in a few years time. There is no reason why he can't take this approach in parallel to any other path he decides on. In fact, maybe he doesn't even want to begin to approach this path for another few years. Only he will know. And you will know when he's progressing and it's still fun, otherwise, what's the point?


The world of computers is a big one. The world of programming is just as big. I'd get someone to teach him about how programming languages were invented and all the different types of programming languages available. From Functional to Imperative to Object Orientated. Teach them about the CPU and how all the instructions on there were programmed in many years ago by women by hand and in Machine Language (Zeroes and Ones). About how every High Level language since has built on those shoulders of giants, so that we can just pretty much forget about all that stuff and take it for granted. Teach them about Low Level languages like Assembler. Mission critical languages like ADA that are used to program the software for Fighter Jets.

Get them a book!

"K&R" is considered a classic and if you really want to learn about computer programming you could do worse than learn 'C' which is used for programming in many different fields and is the basis of many other languages (Java, C++, Javascript, Perl, PHP), not to mention it making up most of the Windows OS. It's a terse language. And K&R is a terse book. It is probably far too advanced for a six year old. This is the deep end. Buy him a copy anyway. One day son...

Really, there is so much to learn.

The question is: is the hunger there? Can they see the beauty in code?

Let me give you a couple of examples.

Check out everything on this guy's channel: Bisqwit

Check out everything this guy has done as well: Chess programs in C, Java and Javascript, also 8080 emulator

Here you will see two absolute geniuses at work. But very few have that level of intellect and/or passion.


Computer programming in many ways is the perfect synthesis between Language and Mathematics. They even have poetry competitions in Perl!

This is just some food for thought, but I would say, learning the English language and learning Arithmetic and Mathematics is absolutely key to getting a good grounding if you even want to think about tackling this stuff. You need to be able to spell, to understand punctuation and you need to able to count and add up and subtract and multiply. Also it helps to have a good understanding of Logic as well. AND, IF, NOT...

I learned about Logic gates when I worked in Pneumatics and Hydraulics, funnily enough. There was a dreaded box called the 'Shit Machine'. It was basically a logic control for a sewerage plant that would control stuff (Pistons/Cylinders/). The absolute state of it! No one wanted to work on that thing! But it fascinated me. It was basically a very crude computer. See Pneumatic Computing:





This field of computing has always intrigued me. Now they are building computers that work via light (Photonics) as opposed to Air.

Anyway, someone had to program the 'Shit Machine' for it to work (I can still smell the ******).

Probably the first modern computing device was the Jacquard Loom (superseding the Abacus before it):



Good luck with programming one of those!



There is no shortage of resources or people who will help you out in this day and age.

Just work out what it is you want to do.

Also consider different approaches to the problem. Learning about signal flow is essential in programming. One of those Electronic Circuit board things for kids would be another good area to learn stuff.

Do a search on Amazon UK for -
Electronics Kit for Kids


All in all, no matter what area or level of programming your kid wants to go in to, he will need to have a multidisciplinary understanding to consolidate it all in to one coherent whole.


(you did ask...)
 

New Posts

Latest Threads

Top