Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Possible Duplicate:
At what age could I reasonably teach my children about programming?

The Question

I've been thinking about starting a children's (aged 10-11+) group about programming, get a few cheap computers, install basic programming tools and get into it...

I'm looking to teach basic programming concepts to the kids:

  • conditions (if, else)
  • loops (while, for)
  • functions (what they are, how to use)
  • variables
  • basic data structures (array, hashmap)

I want them to have a basic tool set with which they can attack any problem in any language, and get a working solution which they can use or improve upon.

I think the ideal language would be strongly typed, but in my mind JavaScript is an excellent candidate for lot's of reasons, the big problems are: 1. Not having a good IDE (mainly debug) - what can I say I love Visual Studio. 2. No access to machine itself (so no file processing etc...) - too sand-boxed.

Looking for any and all input (what to use, teach, explain), do not need donations but always helpful :-) - this will be a local community thing, not a national project, though if it works - I will try to push it into the county level... thanks!

And yes, I do believe teaching something, makes you better at it - So I do plan to benefit from this.

I want to hear your thoughts, a good and thoughtful answer will be rewarded!

My Thoughts:

I think Web Programming is possibly the best way to go, for quick ROI, since it is the thing they would get (building a website that does neat things), but it has many drawbacks, first it is highly complex in terms of tools required and deployment in the "real world", I want something that they can install at home and share with friends who would also be able to use it... I'm willing to provide a free hosting account for them, but that would make them dependent on me, and I want it fully available, even if I'm not there to provide, something they can do at home with no passwords and internet access.

So my next thought: c# via mono - is strongly typed, plenty of libraries so they aren't stuck on anything, lots of online documentation, free tools and powerful. With a GUI environment, so not everything has to be scripts and console apps. but supports those as well. Fully compliant (even works better) on windows, but also will work in class on Linux. Does everything a programming language should do and more, has proper tools, and the syntax being c based will also assist in learning other languages in the future. UI is also "nicer" than Java so an advantage...

Basic setup: el-cheapo computer with acceptable screen, keyboard and mouse, networked and internet connected. Single printer in network shared by all. basic graphics card, network card, nice HD nothing fancy and enough memory to do almost anything (2-4GB?)

Some sort of desktop friendly free linux (suggestions?) Good Text editor (we can have a choice)? (suggestions?) Relevant IDE? Relevant SDKs? Debug/Deploy Environment (for example web server for web programming, though this is for a later stage?)

A little background info (could answer some questions you might have)

I live in a small community where getting a room to do this in, and store the equipment shouldn't be a problem. I thought of donating some of the computers and maybe getting some other like minded people in the community to donate equipment and time to the project. I think the main problem would be getting kids to come :-(

I have this bad experience when I was taught LOGO? as a kid, I couldn't see the point of drawing on the screen, and it seemed that it had little to do with programming and more with geometry which I hated...

share|improve this question

marked as duplicate by Mark Trapp, ChrisF Apr 22 '12 at 11:39

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

    
you should consider editing your question to emphasize the actual question part and the important background and move the less important details to the end. - In its current format the question is too long and not focused enough. Also check out scratch.mit.edu and see if it helps you. –  Danny Varod Apr 22 '12 at 9:19
    
+1 for covering a subject that should be way more popular in the programming world. My oppinion is, start with python - it's syntax makes it a great programming language to teach beginners. –  Bugster Apr 22 '12 at 10:16
    
I taught computer programming to that age group when I was in high school at the local library. I did teach LOGO as part of the course. For children that age it's really good, cause it teaches the concept of commands drive actions, and actions have parameters. –  Mathew Foscarini May 4 '12 at 1:35
add comment

1 Answer 1

I've had a little experience teaching a class of students about programming, and I was able to take a couple of things away from that which I hope will help you here.

  • You need to be able to show the children how to create something quickly, such that they can get an immediate result, otherwise they'll disengage very quickly.
  • You can teach children how to program without compilers, IDEs and even computers, simply by creating an engaging game that involves simple instructions, and getting the kids to follow the instructions. This is actually the best starting point, because you can get the kids to try and solve a puzzle, while being active, and learning simple logic.
  • Language choice is in some ways less important than making sure that you remove as many of the "boring" tasks that might cause kids to feel that programming is too hard or too slow.
  • Age of the children isn't as important as how you relate to them within each given age group. The class I worked with were 9 year olds, and yet the way I conducted the class would have engaged children a little younger, and even much older. I suppose however that children aged less than 8 might find some of the logic harder to understand than the older children.
  • Set very simple tasks that show something the kids will find interesting and useful, and build up to it slowly. First a couple of exercises without the computer, then show them basic instructions covering conditional and iterative logic. When they understand the basic logic, move to simple functions, and after that simple data structures such as arrays and lists. Later, if the children are a little older or if you find they are capable, you can introduce some of the more advanced concepts.
  • Create a number of lessons that are essentially repetitive, but are presented differently. Kids like to learn, and then like to prove they can do something. Easy classes that are fun and allow them to consolidate skills will help them move forward confidently. If you move to new topics too quickly, they'll lose interest quickly.
  • Don't lecture the children. Instead, explain something by giving a little background, and then asking questions.

For my lesson I brought in some hardware (in my case hearing aids in both an assembled and disassembled form), and I explained what software was, and asked the kids what they knew about software. After about 10 minutes of this, I told the children that I could program them to do something that I wanted them to do. I asked for a volunteer (every hand was raised), and I wrote a very simple pseudocode program as a simple list of instructions, to tell the child to move, turn, and so on. I then asked another volunteer to read each instruction out, while my first volunteer complied with the instructions. My exercise was then to give the kids a simple list of instructions and to work in pairs to write out a simple program that worked in a similar way, then had the children all outside "running" their programs.

If I were to have a number of lessons following, I might have had the children modify their programs to include simple loops and conditionals. The next lesson, I might have used something like logo to show them that the same program could work on a computer... and after that, I would have showed them that the computer can use many languages, and I would have introduced Visual Basic, C# or Javascript, and used a simple API to produce some sort of moving thing on screen to help them to consolidate their skills. Alternatively, skip the Logo, and just go to the language of choice. When teaching about simple data structures, a simple memory game might be a useful too to have the children develop under guidance, but get the kids to choose what they put into the game.

Based on my points above and on your question, I would probably choose to use free tools to develop a simple application in C#, as this will allow a child to create a very simple and self contained project, without needing to add too many elements into the code that would basically distract the kids from focusing entirely on the tasks at hand.

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.