tags:

views:

129

answers:

5

I will be teaching a week long programming course to kids between the ages of 12-17. Most of the kids have no programming experience. The program is 5 days from 8:30 till 5:00. I think the class size will be small (5-7 kids))

I'm looking for two things 1) General tips for teaching a camp class (how to make it fun when explaining the difference between int and float) 2) Interesting projects that the kids will be able to complete by the end of the week.

Unfortunately the language I'll be required to use is either c++ or Java which means that I'll need to spend more time on itty bitty details than I'd like in a week long course. I feel more competent in c++ than in Java. However if someone can show me that Java is much easier to learn I'll probably teach that instead.

My initial idea is to try something like "a game a day" with games like hangman, tic-tac-toe, guess-a-number, wheel-of-fortune, etc.

Please try NOT to focus on the choice of language and focus more on interesting things I could do with the kids and practical advise for teaching the subject in a short period of time

While there are other questions about teaching programming around I'm looking for advice and tasks that are useful for specifically a week long camp

A: 

Do Java over C++, because memory management alone would shoot you in the foot. Java follows more naturally.

Also realize that (without night hours, maybe), some of the students will fall behind, or some of the students will be ridiculously bored. You might want to have an easy version of each day's project in mind; otherwise, it's hard to target that range of audience.

With the projects, it might help to write most of it as libraries the students can use, instead of having them write from scratch.

Dean J
Are there any particular functions I should write for them (assuming the use of Java)?I can't imagine hangman or tic-tac-toe requiring anything too special.
Good Person
For tic-tac-toe, you could write an object that stores the values, and a method that displays that object to System.out.
Dean J
I'm thinking I may make it a GUI and do tic-tac-toe later in the week so the kids see something cool...
Good Person
+1  A: 

I think the idea of doing a game a day is a good one. It would be good to move from turn-based games to real-time ones as the week progressed. You'd have to find a good balance of getting them to just rewrite the code you are giving them vs letting them have a bit of freedom with it.

I don't think you should spend too long teaching the difference between an int and a float, just let them see how they are used (e.g. an int is used for the number of times you've been shot, but a float is used for the distance between you and a monster).

It would be good to build up the games iteratively, so they get some instant gratification (there's nothing worse than staring at a screen of code for 8 hours with no feedback, and at the end of the day getting a compiler error).

Skilldrick
+1  A: 

I'm not sure this is a useful answer, but if you have a little time to check it out, there is a modified version of Java (really an IDE and a library) called Processing. According to the authors, it was created to allow them to play with data visualization without having to worry about the trivialities that most programming languages require. I am not a teacher, but I have a kid who was utterly amazed, constantly entertained, and basically awed by the demos and the simplicity of it all.

What it provides is a framework in which you can see your results in moments. It behaves as if it were interpreted, but it allows you to generate compiled programs, runnable via the web. One of the other answers mentioned that no feedback for 8 hours is a pain. Well, Processing allows you to have a working program that actually does something and looks cool in about 2 minutes.

MJB
+4  A: 

As a side note, I really like the idea of a game a day.

One piece of advice I would offer though is to make sure that by the end of the week you can send them home with the resources necessary to keep learning on their own. Some examples would be, detailed instructions on how to set up the development environment you have been working with on their own computer, all of the well commented source code that you discussed while in the camp as well as maybe some handouts with good resources (ie Books/websites) that they might be interested in if they want to learn more.

Without this, I could see them wanting to expand on what they learned at the camp, but end up very frustrated trying to set up the same kind of environment at home.

Jon
+1 Good point...
Skilldrick
A: 

There appears to be relevant material under media computation. E.g. examples of simple image and sound processing.

Darius Bacon