Jump to content

Programming language for kids?


Iskaral Pust

Recommended Posts

Help needed from any of the programmers or techies on the board: what's a good programming language to start with kids? 

My son is almost 10.  He already uses Scratch for basic concepts and has spent many hours in Minecraft.  I'd like to introduce some coding through some simple projects to convert him from game images to the idea of building something from the bottom up.  Most of the languages I know are oriented toward projects that would be too technical or abstract for a kid or just ancient (C++, MatLab, Python, Fortran, APL, SQL, VBA, assembly language, Basic, etc)

Any recommendations of where to start?  Would Java offer some broad application projects?  Or maybe just stick with VBA and use Excel as a visual UI to play out & interact with what the code does?

Thanks all

 

Link to comment
Share on other sites

I'm not an expert at all but I think it's a really interesting question, as I learnt programming at the age of 13 (I think) - but things were pretty different then, in the 80s!  (Yes it was BASIC)

I just googled a couple of pages which do have suggestions, though hopefully you'll get some actual techies replying in this thread.

https://www.kidscodecs.com/how-to-pick-a-programming-language/

http://readwrite.com/2013/04/19/how-to-raise-the-next-zuck-6-coding-apps-for-kids/

Link to comment
Share on other sites

I'd go with Python. There are a ton of python courses for kids, you can start doing really cool things pretty quickly (like websites or graphic programs) and it has all the functional basics. 

Another one to start with if you don't want a true language is something like Logo, which has been rewritten using python and is available. 

Link to comment
Share on other sites

Thanks.  I'd like to start with a true language.  Most of the new "introduce code to kids" stuff from Code Academy and similar are just animated puzzle games.  Which is fine to help kids start thinking about breaking a problem into a sequence of steps, but he has done that and I think he's ready to try some actual language. 

I'm bribing him with Civ2.  I played a game in recent weeks and told him about it.  He is enthralled by the idea.  So I told him that 30 minutes of coding will buy 20 minutes of Civ2, and I'll help him with both. 

Link to comment
Share on other sites

2 minutes ago, Commodore said:

MIT has a programming language called SCRATCH, that is very graphical, good for kids

https://scratch.mit.edu/

Yeah, when I saw the title I came in ready to tout some of MIT's offerings like Scratch or Starlogo. Then I read IP's second paragraph :P 

If you're looking for a true language, Python works. I'd say learn Pygame because that would probably keep interest once you've gotten the foundation.

Link to comment
Share on other sites

1 minute ago, AverageGuy said:

Yeah, when I saw the title I came in ready to tout some of MIT's offerings like Scratch or Starlogo. Then I read IP's second paragraph :P 

If you're looking for a true language, Python works. I'd say learn Pygame because that would probably keep interest once you've gotten the foundation.

oops :)

Link to comment
Share on other sites

OK, Python it is. 

IDLE is just a basic text editor shell.  Is there a free IDE that looks similar to MatLab?  I've used one like that at work but I don't know the source. It has a text editor, graph interface, folder structure, variable tracker, etc all in separate windows at the same time. 

Link to comment
Share on other sites

We did our first Python session today using Notepad++.  He did really well.  I'll look further into an IDE, starting with Pycharm.  Thanks for suggestions here and keep them coming.  I'll probably need a Python book to get ideas for projects and programs outside of quantitative finance.

And then he got his first shot at playing Civ2.  He loved it.  He has been formulating plans and strategies ever since we stopped.  I just need to manage the addiction now. 

Link to comment
Share on other sites

Scratch, then Python. My take is to avoid IDEs like the plague; the very idea of text (and files and programs that act on text etc.) is at least as useful as actually writing if-then-else constructions in a sandboxed environment. That is the revelation, and makes you incredibly powerful.

I liked “Learning Python the hard way,” but it’s not perfect. (But at least it pays attention to the hard part.)

But, compared to the 80s, it’s incredibly hard to teach yourself programming today.

Link to comment
Share on other sites

I would steer clear of Learn Python The Hard Way for a couple of reasons. It's not really suitable for ten year olds, it's only useful if you are the type of person that learns well by learning by rote, it uses an outdated version of Python and actively argues against using the latest version of Python which IP really ought to be doing, etc.

Al Sweigart's books Automate the Boring Stuff with PythonInvent your own Computer Games with Python, and Making games with Python & Pygame are all much more suitable for a kid to be reading. All of the examples are actual runnable programs of varying utility which will be much more satisfying to get up and running, and it helps guide you towards what I find is the most difficult of programming: grokking the process of translating problem descriptions into code.

Link to comment
Share on other sites

Thanks kungtotte for good suggestions.  My wife ordered a kids' Python book from Amazon.  I'll check out these too. 

So far I've taught him print, input, if/elif/else, while, for, randint and arrays.  Each time I pick a simple problem or scenario and help him understand how we need to break it into tools and steps.  For practice, we've built an array of mini-games like guessing a random number or dice-based battles from D&D.  Yesterday, for revision on for and if, I asked him to get a program to recite the Happy Birthday song using a for loop and an if/else test.  He was able to write it with minimal help.

Why are arrays so weird in Python?  They are one of the most fundamental data structures.  

Next I'll investigate whether Python has class data structures and allow him to build an extended D&D-type game with various instances of classes "heroes" and "monsters". 

Link to comment
Share on other sites

11 hours ago, kungtotte said:

Automate the Boring Stuff with Python

Thank you! Great.

See, I think about teaching programming a lot. (Among other things, professionally.)

What annoys me is to see even 1st year CS students who “can program” (in the sense that they are able to write large Java applications in an IDE), but are completely helpless in “getting stuff done” with a computer. Everything that makes me God-like in power on a computer is the ability to think in terms of text files and the manipulation of data formats using relatively banal programs I quickly whip up (in, say, Python – but the language is exactly not the point, which is a point.) A large group of people who “can program” can’t do this, which is just hearbreaking. They are utterly helpless in getting even very basic workflows automated, and will happily perform soul-destroying, repetitive actions clicking through inane web interfaces (as if they were secretaries) or in (god help us) excel. They can’t do basic unix, they can write a web scraper, they can’t even read stuff from standard input. They are like children to me.

I’m slowly getting my brain organised with respect to what I find “important to learn” about computers. I know that it’s not primarily programming, but that there’s a more fundamental level of data representation and processing. This was “for free” for my generation, which learned all of that automatically, but now it’s invisible. This must be teachable. (My list of “stuff worth learning” also includes version control.)

Another odd book that I find great, is The Elements of Computing Systems: Building a Modern Computer From First Principles by Nisan and Schocken. (Not sure if its suitable for kids.) 

Link to comment
Share on other sites

37 minutes ago, Iskaral Pust said:

Why are arrays so weird in Python?  They are one of the most fundamental data structures.

Explain. You mean Python lists, or the array module?

Clearly, python is a higher-order language than, say, C, so it’s basic data structure is a list (untyped, and of unspecified length). That serves the language ideology quite well, I think.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...