This week's book giveaways are in the Cloud and AI/ML forums. We're giving away four copies each of Cloud Native Patterns and Natural Language Processing and have the authors on-line! See this thread and this one for details.
When I was nine, I attended a summer school course on computer programming. The class had a single computer with twenty to thirty students. The instructor controlled the computer most of the time, demonstrating a few simple concepts in a language that was similar to (or perhaps the same as) whatever folks were programming Atari games in the early and mid 1980s.
Recollecting now, I believe I did learn a few things in that class. I learned a bit about just what computer programming meant. I learned the idea that the lines of code of a computer program execute sequentially. I may have also learned the concepts of looping, and conditional execution (if statements). That's about all that I can remember.
When I was 12, I attended a class in junior highschool on computer programming. I remember playing with some Apple IIe (or maybe some other model) computers, making silly animations all semester long. I don't remember anything about the code that I wrote. I'm not sure if I really learned anything during that class. (On a side note, I was 25 before I programmed again, with the exception of one month of lightly playing with Java when I was 21.)
Now, I'm trying to figure out what to expect when trying to teach ten to twelve year old children a few things about programming. I'm not really sure just how complicated to make things, what tools to use, and what resources are out there on this topic.
So, I appreciate any shared experiences, ideas, or resources. [ May 25, 2004: Message edited by: Dirk Schreckmann ]
I've used Robocode. It was hard and assumed I knew quite a bit about java.
Squeak looks cool. The HTML tutorial shows how it is good for kids. Good find!
Just sharing my memories of taking computer classes as a kid in case it's useful: In elementary school, we used Logo. This was good for basic commands and angles. At elementary school age, I also did Lego programming at the computer museum. I also remember programming a mouse to go through a maze. It seemed harder at the time, but it was good because it was very visual and kept my attention.
In junior high, I took a summer course at the local college where they used C++ to teach basics (if statement, loops.) This is good for kids who really want to get a feel for programming. They had two classes. The advanced one was for kids with some programming knowledge and were really into it. The easier class used Basic to teach really simple programming.
Timeline: 5/27/2004 8:30pm Children in bed. Logs on to computer 9:05pm Logs in to "JavaRanch" 9:13pm Reads "Teacher's Lounge->10-12 year olds" thread 9:18pm Discovers 'Robocode' 9:37pm Has read various Robocode links, downloaded, and installed Game/API
5/28/2004 3:06am Still tweaking various robot designs. Forces self to go to bed.
*Note to Kathy S.* A couple Head-First Book suggestions:
Head First Robocode Battle Tactics Head First Robocode Addiction Recovery Head First Divorce Proceedings (wife's recommendation if I keep it up..)
What a great way to supplement a Java curriculum- hands on and fun. (emphasis on 'fun').
Bear in mind that these 10-12 yesr-olds will almost certainly already "know everything" about how to use a computer. One of the largest problems could be avoiding the disappointments and riots when they discover that programming does not provide the instant-gratification of a drawing program or a search engine or game or whatever else they have used before.
You will need to think very carefully and provide an adaptable balance between "large" exercises that produce something which look like what they have seen computers doing before (but take a lot of thought and planning) and "small" exercises which are more easily achievable (but only provide a dull or useless end result).
There are some topics which are common to every programming language e.g.
1- Philosophy of language (simple vs. advance / compiler vs. interpreter). 2- Language semantics. (e.g. case sensitive, end of statement etc.) 3- Type of Variables. 4- Loops. 5- conditions. 6- Input/Output. 7- GUI.
etc. etc. You teach them in the following order. Let me take an example of producting a table of 2.
1- Show them a program in action which creates a table of 2. 2- Explain them the concept of loops. 3- then treat them as your programming language and have the things done as you would like your computer to do it. 4- Then ask them to have it done themselves with the computer correcting their syntax wherever necessary.
Hope this helps.
-----<br />If you think education is expensive, try ignorance.
I know a couple of 12 year olds that are better programers than a lot of people that post on this one site. I was amazed seeing some of the ages of the people coding there and what they were able to do.