A week and a half after school started I had to go to two weeks of National Guard. Do you have any idea how that breaks up the flow? The sub did a great job with the notes I gave him but he was not a math or programming person. As luck would have it there was a student in the Programming I class that was very good at Scratch so there was actual progress in the class. Actually much more than I expected. The programming II kids were on their own with a Mindstorms robot project. They actually got it figured out on their own. The last two weeks sort of confirms my idea that if you give the kids interesting projects they will learn programming without the lecture or show and tell format. Of course it does require a good batch of students.
Here is what I started the Programming I class with. I tried to make each assignment progressive and cumulative.
1. Create a very simple maze. More like a road with corners and turns. Get a sprite to go through the maze using the arrow keys. If the sprite touches the wall it dies. Give the sprite 3 lives. Build a timer to that measure time to complete the path.
The walls/maze are a sprite.
2. Create a “dodge ball” game. Have a sprite you can move by moving the mouse. Have a number of other sprites floating around the screen. Dodge them. Build a timer to track how long you survive.
3. Make a simple Pac-Man game. Touching the walls is OK. Gobble other sprites. They can be stationary. Building ghosts that randomly follow the maze is very difficult. Try ghosts if you want.
4. Go to http://v636.com/apps/jake.html. Watch Part 1 video. Build a Jake like game using arrow keys and space bar to shoot.
After two weeks of unguided classroom work the kids are working on 3 and 4. It is really amazing what unique ideas the kids will come up with when they are given just a general idea and not specific directions. Are all of the programs unique? Of course not. Some kids are better programmers and the kids are all sharing ideas. It is interesting to see the possessive nature of the kids towards their games. In a class of 13 nobody just copying someone else’s code. It is a team effort to solve a particular coding issue but then they modify the idea to their program.
My idea of a good programming class involves more than just sitting and coding. A “cool” factor has to be involved in the project to stimulate motivation. “What can I do to make my game cool” needs to be in there somewhere. Most textbook projects really do not give the students the opportunity to really work on “cool”. A point-of-sale program just lacks that stimulation. Grading projects that are all different does present some issues. I cannot have a nice simple checklist. I have to throw in effort, artistic appeal and things like that. Things that are never easy to measure.
Several years ago there were some interviews with several game company hiring executives on one of Microsoft’s learning sites. (Wish I could find them again.) The usual “who do you hire” type interviews. Artists, mathematicians and a physics background were high on the list. I cannot do too much about the math and physics in Programming I or II but the artistic requirement is something I can target by letting the kids build projects of their own design.