Question for computer science majors/ multimedia enthusiasts

<p>Think back to when you were 10 years old. If you could go back and teach yourself the most fun and interesting things about computers, what would you teach the young you? </p>

<p>Would it be programming? robotics? math to train the mind? art so you could use computers to make really great graphics?</p>

<p>What would be the most fun activities to do in a computer club with other 10 year olds?</p>

<p>Be fun and creative in your answers!</p>

<p>*** The reason I'm asking – my 10 year old son loves programming (C++), flash animation, is working on a webpage. He's done a programming camp (Cybercamp), a game programming camp (IDTech), and this summer is doing flash animation camps with both the above outfits, as well as a video production camp. Mostly he learns about computer stuff from books and his older brother. He wants to start a computer club at school and I don't trust an elementary school teacher to lead them in the right direction, so I'm asking for your help! ***</p>

<p>Your 10-year old son sounds smart, haha. Congrats to you (seriously). </p>

<p>I didn't really get into computers until I was about 13-14 (before my freshman year in HS), and I've always been more of a hardware person. </p>

<p>Anyway, I think programming would be one thing. Maybe an "easier" to read language like Python (Python.org) (although your son sounds like he already knows C++) would be good for 5th (? don't know ages anymore for grade levels) graders to learn some basic programming concepts with. Something static (IE, web design) would be good too because the kids would see more immediate results.</p>

<p>I'm not sure what kind of math kids that age would begin learning. I think you learn to multiply in 3rd grade these days? It's tough to think back that far, haha.</p>

<p>I would do some hardware stuff too. Take an old Pentium Pro (or II or III even now), take it apart, let the kids put it back together (is there a teacher who does any of this stuff that could sponsor the club?). If you had a knowledgeable instructor he/she could teach them very basic computer organization/architecture. Maybe even very basic digital design (logic gates aren't too hard to understand). Then they could even install Linux (something like Edubuntu, <a href="http://www.edubuntu.org%5B/url%5D"&gt;www.edubuntu.org&lt;/a&gt;) on it after re-assembling it. I started using Linux around when I was 15 - I can't imagine how much more knowledgeable I'd be if I had been using it when I was 10. Things like that can be fun and interesting, plus will really make your son stand out when applying for colleges/jobs later on (not that knowledge of C++ at 10 isn't already impressive enough!).</p>

<p>Any of those things (even on a very basic level) could be interesting and fun for kids to do. Although it's really hard to think back to when I was 10 years old and think of what I would and wouldn't understand.</p>

<p>Taking stuff apart is a great idea -- everyone loves that, and I think I could probably get an old computer donated for that purpose.</p>

<p>Actually, he has been asking to learn Python. How would you go about learning that/teaching it to kids, and why is it good?</p>

<p>Python is a relatively recent language but you can find a lot of great online tutorials for it. <a href="http://wiki.python.org/moin/BeginnersGuide%5B/url%5D"&gt;http://wiki.python.org/moin/BeginnersGuide&lt;/a> is a good place to start. There are guides for learning it both for nonprogrammers and people with programming experience. I'm not sure how much C++ your son knows but he can look at each tutorial and see which would be best for him.</p>

<p>Python is "good" for beginners for a number of reasons, but maybe most important would be that it's very easy to read and understand what reserved words mean/do. Whereas in Java, to output a string you have to type System.out.print(), with Python its just "print". Or defining a function, you just write "def <a href="parameters">function name</a>" rather than something like "public void <a href="parameters">function name</a>" which could be less intuitive for a nonprogrammer (public access, void return type) as far as meaning goes.</p>

<p>I started programming with Qbasic and Pascal and then C++ (serious programming) when I was in 6th grade. What our teacher did that now I’m obsessed with programming was making us figure out a way to write a program for some obvious things, but the point was to do it from scratch. Very simple example of that is to try to create a little Macro media Flash, paint or photoshop, or etc type of programs. When the person gets to the point that he/she naturally thinks about programs or even ordinary stuff as little pieces and how actually they could be written, then its a good idea to introduce them to higher level programming and new languages such as VC++.net, VB, or C#.net.</p>

<p>I don’t know Python, but pretty much everyone I know who knows it thinks it’s a great language for beginners - intuitive/easy to learn, and useful.</p>

<p>Computer graphics are fairly difficult, and math-heavy (I’m taking that class right now!). He may want to try that a bit later.</p>

<p>Lots of kids like robots. I bet there are kits you can buy or something. There are also build-your-own-computer kits.</p>

<p>I did a lot of java at about that age (very similar to c++). I had a teacher encourage me to start learning about threading and socket programming, and had a lot of fun. If your son’s into flash, he may enjoy working more with building his own GUIs in c++ (keyboad and mouse events, ect).</p>

<p>If I could go back in time and show myself something, it would be functional programming. Just being familiar with the different though process it requires and a young age opens all kinds of possibilities. Scheme and Lisp are the main functional languages, though I know python can do a pretty good job of it, and I think there’s a way to emulate functional behavior in c++.</p>