Skip to main content

Programming for Kids

I have started to see if I can get my 7 and half year old son interested in programming. This has been quite an educational experience for me. I have always had fond memories of myself self-learning GW-BASIC as a kid in the early 80s. So I was on the look-out for a modern way to teach programming for the young minds.

I started with the usual suspect of MIT's Scratch project. However for some reason, beyond structured learning through tutorials, my kids were not too attached to the setup there. I was finding that the environment was too abstract in some sense - for example it expects you to be familiar with messaging passing techniques to do any form of mildly interactive programming. Regardless, it is a good starting point.

Similar to Scratch, the GUI based programming available with Lego's Mindstorm EV3 got my attention. Unlike Scratch, this can be an expensive venture but the physicality of actually moving parts can help connect young minds with programming concepts. And it can be quite fun if you know what you are doing. Unfortunately EV3 still requires quite a learning curve if you want to make something on your own and may be best kept for the pre-teen group.

Talking about expensive ventures, Digital Youth has a catalog of various online learning courses, including couple of Minecraft programming courses. I enrolled my kid to the Mod Design 1 course since he was into Minecraft. I appreciate the concept of the effort and the material put together is relatively well thought-out. But the course definitely needs strong adult supervision who is familiar with the subject matter. There is a lot of copy-paste style of programming here and they fail to go into deeper concepts. At the end of the course, I fail to see how a 8 year old can learn much programming with this except learn some copy-paste trickery and use GIMP to do basic image editing.

Trying to relate to the way I started learning programming, I kept looking for something rather down to earth that is easy to experiment with and simple enough to learn quickly while not limiting what you can do with the language. Something like BASIC. Then one day a google search led me to BASIC 256. It is a very interesting, free small program that is really very easy to grasp and let kids create relatively sophisticated programs without the kind of very constraint environment like Scratch.

More recently, I can come to discover another platform called Kojo that is similar to BASIC 256 but has more capabilities largely due to a more sophisticated underlying language called Scala. It seems to capture the essence of self-directed learning environment while leaving open how far you can take it. This is my current recommendation for 7 to 10 year old first-time programmers.

Some other notable tools and programs I have also tried and found useful:

  • Microsoft Project Spark (Based on the older Kodu program) Fancy graphics with a basic programmable environment. Great concept but may be too complicated to do free-style learning.
  •  Alice 3D based programming - similar to Scratch but more complex. Can be a good learning platform for teens and youth.
  • Greenfoot is a free Java based learning environment that can be a good next step once the learner is comfortable with things like Kojo.
  • Tynker is another interesting commercial online platform to learn while having fun. My experience with my kid was similar to trying to learn with Scratch - great at start but limits true creativity. 
Any other recommendations? 


Comments

Popular posts from this blog

Automate SQL Dumps for SQLServer

The backup mechanism in SQL Server may be fine for many cases, but there are limitations with it (like restoring to a different server). I really like how I can just dump the database SQL with mySQL which can be easily processed with custom scripts. I was looking around for a mysqldump equivalent for SQLServer. I know you can do this with the SQL Management Studio through GUI in 2008 version, but I need this to be automated. This lead me to discover the SQL Server Management API . With it, you can do a SQL Dump like: using Microsoft.SqlServer.Management.Smo; using Microsoft.SqlServer.Management.Common; using Microsoft.SqlServer.Management.Sdk.Sfc; namespace SQLGenerator { class Program { static void Main(string[] args) { //Connect to the local, default instance of SQL Server. { Server myServer = new Server(args[0]); Database db = default(Database); db = myServer.Databases["be"];

Better Samsung DeX Experience

Samsung Dex  is a pretty amazing technology that turns phone into a full fledged desktop PC. The original device costs about $150 but has some limitations such as not being able to use headphone jack and basically having the phone locked down. A cheaper, and arguably a more functional device can be had for less than $40 with things like the Melopow Doc  that leaves the device in a more usable state with full access to the devices ports at a much better price. And while using DeX, make sure to use the fantastic Dex MaX  app to add support for fullscreen to all your apps. Happy DeXing!

GWT: Emulate tab on Enter

Sometimes users expect text boxes to move focus on to the next element after pressing Enter, similar to most spreadsheets. If you are using GWT and jQuery, here is a little snippet to help you along: public class AutoTabbedTextBox extends TextBox implements KeyUpHandler {     public AutoTabbedTextBox() {         super ();         addKeyUpHandler( this );     }     @Override     public void onKeyUp(KeyUpEvent event) {         // emulate tab on key         if (event.getNativeKeyCode() == KeyCodes. KEY_ENTER )             focusNext(event.getNativeEvent());     }     public native void focusNext(NativeEvent event)/*-{             var inputs = $wnd.$( ':input:visible' );             inputs.eq(inputs.index(event.target) + 1).focus();     }-* / ; }