tags:

views:

383

answers:

9

Please read the entire question, as this is not a standard fare, "What are some good C# books?" question.

I am looking for a good book or perhaps something in the form of CBT, to help teach my 10 year old son how to program (using C# 4.0 / .NET 4.0 and of course Visual Studio 2010 as the IDE). He does not know anything about programming, so it has to be very introductory in nature.

The material has to engage him as a child (i.e., be interesting). Finally, it has to use language a ten year old can understand. Practically all of the excellent C# books that are out there use adult language and terminology that he finds difficult to grasp as he's reading. This include even the "For Dummies" series, which is still catering to adults.

Thank you

Update: Microsoft Small Basic is looking more and more intriguing, despite the fact that a part of me still says start with C#. Thanks to everyone who suggested looking into that. I think I am going to go through many of my vote points today just +1-ing all of the (original / informative) good answers.

+5  A: 

Maybe Head First serie from O'Reilly can be enough simple for your son. They contain a lot of images to help understanding topics.. I'm not sure about the difficulty of the language used, but you can give a look: C#.

There is also a really introductory book to programming always from same book serie, see here.

Jack
Sadly, Head First Programming uses Python throughout (a big turn off, since this will just confuse him with regard to C#). The latest Head First C# (i.e., 2nd ed) book has a lot of errors throughout and needs some serious editing work, before it can become "good." In any case, I gave your answer a +1 for the ideas.
Michael Goldshteyn
@Michael: Really? I find Python and modern C# (that is, C# 3.0+) are more similar than not. Both are OO languages with an emphasis on functional techniques. Sure, there are many differences, both semantically and syntactically, but I'm not as certain as you seem to be that the differences would be confusing. Plus, you can transition from Python to C# smoothly by learning IronPython and the .NET BCL as an intermediate step.
Daniel Pryden
+7  A: 

Try Martin Dreyer, "C# for Sharp Kids"

I'm not good at measuring the cognitive aptitude of children, but it looks pretty basic.

cinqoTimo
Good one (+1 for now).
Michael Goldshteyn
@Michael Goldshteyn - I have this book, but I don't have kids yet. I just took a cursory look at it, and I think it's suitable. It says recommended for ages 12-14 though.
cinqoTimo
I took a look at it on the MSDN site, and I think he can handle it. It's a lot more kid friendly than most of the "professional" C# books out there.
Michael Goldshteyn
+1  A: 

Have a look at MSDN Kids corner, it has got lot of resources for kid to start with C#

Prashant
+4  A: 

Why does it have to be C#? IDEs and the whole .net stack and C# as a language is a lot to digest. May I suggest a language that was designed to teach programming skills first: Pascal? If you want to teach OO first, then Smalltalk (squeak.org) is another excellent option. Free, easy to learn, and teaches good OO (everything is an object).

Tested by kids at PARC and the father to all modern OO languages (& anod to simula here)

Joe
+4  A: 

If the goal is to teach programming to a kid, try SmallBasic (it still runs on .NET) , start here: http://teachingkidsprogramming.org/ or http://msdn.microsoft.com/en-us/beginner/ff384126.aspx

nos
+1  A: 

I write mostly C# and occasional Ruby now, but as I remember, I wasn't big on the ceremony of languages as an 8 year old learning to write code. The appeal of BASIC was that you could write a complete, if unsophisticated, program in 1 or 2 lines of code. The shorter the path was from learning that first couple of lines to getting something to move across the screen and make a noise, the happier I was.

Languages that do a good job of that, while encouraging OO design, include Ruby or Python. Logo and Lisp can gain the same amount of satisfaction while encouraging an understanding of functional abstractions. C#, while less boilerplate heavy than Java, requires you to deal with a lot more complexity straight out of the gate than any of those other languages. Eventually he'll want to explore other languages. I wouldn't get hung up on this generation of tools, because all tools will result in habits you need to unlearn when you need to learn something else (e.g. functional programming vs. OO vs. procedural vs. declarative), and what's important in 10 years is likely to be at least a little different, but the basic lessons of each paradigm are all valuable.

  • _why's Poignant Guide To Ruby is great for kids or adults.
  • Hello World! published at Manning is targeting kids, and teaches using Python, but won't poison anyone's mind, because Python mostly encourages good habits.
  • Land of Lisp: Learn to Program in Lisp, One Game at a Time! isn't out yet, but looks like it's exactly what I would have wanted in that 8-12 year age range.
  • Head First C# might not be bad, if you're committed to C#. It targets cubicle workers more than kids, but the graphical presentation might make it less intimidating than throwing an Addison Wesley texbook or O'Reilly programming guide at the kid.
JasonTrue
+1  A: 

Don't teach them C# first, Python is a much better starter language.

Mentalikryst
+1  A: 

I would recommend getting started with Microsoft Small Basic and when he graduates from that he will already be used to the general feeling of the .NET Framework and he would just have to learn the new syntax for C#.

Murven
A: 

Check out a cool language called Phrogram. It's geared toward kids and has many tutorials and kid friendly guides.

XenElement