My seven-years old expresses large interest in computers (well, who doesn't? :). Since I'm mostly program in MATLAB, I'm thinking why not to teach him MATLAB. We did a small project with him (he had to solve as many simple arithmetic problems as possible in a limited time) and he get pretty excited. I coded, he watched and then tested. He also likes to do create interesting graphics and simple animations. So, what's next? I would appreciate any ideas for interesting projects, games, graphics? What math concepts he has to understand to program in MATLAB? Or may be you would say it's too early and we should start with something like Logo, Scratch or Alice?
A simple sudoku solver would introduce him to N-dimensional arrays, loops, and logic.
For Maths, I would recommend looking at The Geometer's Sketchpad. It is fundamentally geomtery rather than computation, but it presents Geometry from a Euclidean perspective and the rigour that it presents would lend itself well to learning computer languages later.
LOGO is the standard school application because it is so accessible for young kids, but if you want something visual why not something like AS2? It's more flexible than LOGO and if he enjoys visual stimuli he might enjoy the graphical richness more than LOGO.
If your kiddo is interested in games then you may try, Gamemaker 8.0 . It is simple GUI based game development. Very simple games can be made in matter of few minutes.
An organisation where I once worked once had a high school student (about fifteen, but with no programming experience) do work experience with us. One of the guys made a simple game in MATLAB with him where you adjusted the elevation and power of a canon to try and hit a random target. A program like that may have more complex physics than most seven year olds can handle though... One of the advantages of MATLAB is that it is very easy to draw stuff, which is certainly good for a young mind.
If you use Matlab for stuff other than math, it requires quite a bit of abstraction, which may be beyond the abilities of a 7-year-old.
One thing you could do with Matlab, though, is to make a GUI and do some simple things like buttons that make colors or graphs change, or (if you help him with a timer object) make game where you have to see how fast you can click a button in 30 seconds.
As for LOGO or other programming languages, there are some good answers for similar questions, such as this or this.
You may be interested in using Matlab with Lego. I know I am, and the 7-year old in the corner can stand and cry piteously until she's big enough to wrest the controls from my ageing hands.
NB SO -- good place for programming advice, bad place for child care advice.
I learned my first programming language in 5th grade (what is that, 12 years old?) I learned BASIC, but had MATLAB been available it would have been a better choice because it has easy graphics.
As I remember, I was pretty happy just doing simple things like getting input and spitting it back out in a different form.
How about plotting cool shapes? Maybe cycloids and their relatives (hypocycloids, hypotrochoids etc.)
It might be worth you taking a look at Processing too. It's a language for artists to program animations, and it has a pretty shallow learning curve.
What about trying Small Basic Its a reduced language (i think only 15 or so keywords) and has an IDE specially made to appeal young kids. It even includes the LOGO turtle drawing!
plus you can publish your projects as silverlight apps online with just a few clicks.
here's a link of a Hanselman post of his opinion on Small Basic, plus a little shape drawing app he made with it link text
from the blog:
While the boys are only 2 and 4, I'm always keeping an eye out on new ways to teach them programming. [...] Small Basic is a simple (only 15 keywords) but powerful environment for getting started programming. Great for kids and non-technical spouses, but powerful enough even for the professional game developer. [...] For those of us old enough to remember learning to program with LOGO and its ubiquitous Turtle.
(pics from Scott's blog)