[CoLoCo] programming for kids

Scott Scriven ubuntu-us-co at toykeeper.net
Wed Dec 17 13:58:46 GMT 2008


* Andrew <keen101 at gmail.com> wrote:
> I found this neat greenfoot program today.
> http://www.youtube.com/watch?v=Tcwx-I6Arwk&feature=channel
>
> It looks kind of neat. I don't really know how to program, but 
> it seems like it would be a very useful skill.

Yup, definitely useful, and it can be fun.  :)

Greenfoot looks pretty decent.  It's like LOGO, with a bigger 
library, better interaction, and a better GUI.  The only drawback 
I see is that it uses Java, but it looks like it manages to avoid 
most of Java's biggest problems.  So, go for it.

Java is popular (and therefore good to know), but it's kind of 
inconvenient to use and almost always sub-optimal.  I'd recommend 
using some other language if you get bored with Greenfoot.  (it's 
a *lot* easier to learn a second programming language than it is 
to learn a second human language)

If you find you enjoy programming, it's a good idea to learn 
several languages.  Each one will reveal new ways of thinking.  
Some good ones to look at (for various reasons) are:

  - Python
  - Shell
  - C
  - Assembly
  - Lisp / Scheme
  - Java

If you enjoy those and want something a little more unusual, try 
something like Haskell or Prolog.  Of course, if you find you 
don't enjoy programming, then don't do it.  :)

> any suggestions for something to help getting into programming.

I'd look into pygame (Python and SDL), or perhaps a layer on top 
of it like GASP.  Also of potential interest is Nodebox.  I 
suggest these because Python is probably the easiest current 
language to learn, and has what I think is the cleanest 
conceptual model.  It can help you learn how to think about 
programming, without having to "unlearn" a lot of bad habits 
later when you use a different language.

> interesting motivations like trying to create an anthill 
> simulation, or to create an asteroids game. I seem to need a 
> good directional motivator for me to continuue with things.

Definitely!

What got me really interested was sound and graphics.  I started 
out making bleeping sounds and some pretty horrible screen 
savers, then made some games and a paint program and a bunch of 
other stuff.  I'm still doing sound programs... working on a midi 
processor right now, so I can make cool sounds by dragging my 
finger around on a touchpad.  :)

Something else which really, really helps is if you can find 
other people with similar interests to share with and bounce 
ideas off of.  Programming is a very social activity, and one of 
the best ways to learn is to argue your way through a problem 
with someone who thinks about it differently.

For amusing examples of what *not* to do, read thedailywtf.com.

> are there any good project ideas to use with those.  If i don't 
> have a good project goal, i'm less likeley to stick with it.

It really depends on what you're interested in.  Here are some 
ideas; maybe at least one will spark something.

  - All sorts of games...
  - Pretty animations or screen savers
  - Puzzle solvers (ever wanted to know how many words you missed 
    in a game of Boggle?)
  - Text toys, like Madlibs
  - An ambient sound generator, to simulate different types of 
    environments... jungle, busy street, ocean, etc...
  - Physics simulations can be surprisingly easy to write and fun 
    to play with...
  - Perhaps a book reader which presents text in an interesting 
    new way
  - Text adventures
  - Realtime sound wave graphs for music
  - Calculators are easy and useful, such as for roleplaying 
    games (if you're into any of those)
  - GUIs can be fairly easy to make with Glade...  I learned some 
    GUI programming by making an anagram generator.

Also, this article makes some good points:

  http://norvig.com/21-days.html

:)


-- Scott



More information about the Ubuntu-us-co mailing list