Sunday, January 30, 2011

What have we have learned so far

After three sessions with these kids, we should pause and evaluate what we have learned so far.

I have learned that these kids respond much better in a group environment. I have been surprised that we can go 2, 3 hours easily with these kids not losing interest. If anything, tutors are ready to call it the day, but the kids still are tinkering away at the code, asking for assistance. Showing their work was important to all of them; each worked hard to get their game to a point they could show it to the rest of the class.

We have been fortunate that assistance has come from all directions: tutors volunteering their Saturdays, my company generously donating laptops to kids that did not have them, letting us use the training rooms; parents rearranging their kids schedules, bringing lunch, etc. There is definitely an interest from all sides: parents very much wanting their kids to participate, techies giving their assistance and support in any way they can, and even the kids wanting to do this.

Introducing programming via computer games has been successful. Kids all play them and have clear use cases ready to apply. I am not sure how it would have worked if we had started with programming syntax. We are still in the beginning phases, we have only had one "lecture" and we have several to come, so we will see how well we transition to more concrete programming concepts.

We started these sessions with each kid typing what they saw on the projector screen. And off we went, typing the code, pausing to let the kids catch up, with the tutors next to them helping them out. Very little mention of programming concepts, just typing away. We paused just as things starting to appear on the screen, like the game window. The gosu ruby game library was great for this. In less than 5 lines of code the kids would see the game window appearing and they quickly got excited at the possibilities.

After the game window, we added another file, a Player class. In it we defined an image for the player and how the Player would respond to movement. The game window captured the keyboard arrow keys and the player moved up, down, left, right. With the image file, and the speed of movement, the kids all of a sudden realized they could use any image file and could make the player move at any speed, and right away started customizing the images on their own. What started as a dodge ball game, took all kinds of directions. By the time we got to the Ball class and starting typing (define the image to use, the speed the ball will have), the kids were ready and had all sorts of images and speeds to modify the game with.

Then they wanted to keep scores, lives, bonus points, etc. One thing that is interesting is that kids will take the constructs on face value. You give them a variable here or there to store the values and they quickly start using them; not really questioning where those came from. They just assume that is what is needed.

We took some time on the second lesson to go over what they typed, we introduced the concept of a class, objects and variables. We touched briefly on methods, pointing to the behavior they had imparted on their objects. I am not sure how well all that was understood, but I can see them copying classes, copying methods and modifying them slightly to change the behavior. So at the very least, they can make use of them.

The conditionals, iterators are there, sprinkled in the code and we will have to explain those at some point, but so far, they seem to be able to use them by just looking at a previous one and emulating that code to make the other one work.

For our next class, the kids have listed a set of toolsets that they would like to have. We will probably be doing this via modules. They want platforms, they want jumps, colors, prompts. So we will break down into groups, with each group writing a module to give the players jumping capability or adding walls or other constraints in the movement.

Wish us luck!

Saturday, January 29, 2011

Show and Tell

This week it was time for the kids to show their work. It is amazing what they were able to accomplish with only two sessions of instruction. All of them took a basic idea of a dodge ball game and introduced their own variations and images.

We had a great time going over all of the games in class.  Below you will find screencasts of their presentations, along with their code in github. I encourage you to watch them all as each kid does something quite different based on their abilities.

Alex - Golf Game (Sreencast | github)

Aaditya - Game with Bonus (Explanation of Code Screencast | Game Screencast | github)

Kritika - Bludgers of Death (Sreencast | github)

Miguel - Trapped Skull (Sreencast | github)

Lucia - Ocean (Sreencast | github)

Kathryn - mono (Sreencast | github)

Lucas - Blow up ninja (Sreencast | github)

Saturday, January 22, 2011

Classes, Objects and Variables

Our second class went well. The kids quickly settled with their tutors and we continued the computer game. Last week we left the game where the player would not die if the ball hit him.  So we worked on stopping the game when the player got hit by the ball. After that we added the escape key as a way to restart the game. We finally introduced the concept of more than one ball dropping on the player.

The kids quickly copied that code and were ready for more. Some of them added text to show a score, and they worked on changing the icons from the ones we provided to some cool creations of their own. We had ninjas, stars, knives, sharks, and more.

We took a break and went over a presentation on classes, objects and variables so that they would start to recognize what they were typing. We went well into three hours. And as I write this, already close to 6PM at home, I still have three kids in my house still working on their games. They are looking at .wav sounds, they also add any number of objects falling down on the player; it is great to see their level of excitement.

Before we left the class, we helped the kids create github accounts so that they could push their games to github so that they can share them. It is fun to hear them talk about their plans to put these games in the Apple store. I hear in the background their schemes of what they would charge!

Overall, they had fun. I am thankful for the tutors that worked with them, these kids definitely keep them on their toes with their questions and ideas.

Sunday, January 16, 2011

Our first class!

Well we concluded our first class this Saturday. The kids seemed to really enjoy it. It was a fun for both instructors, kids and the parents that attended.

The class went for two hours, we showed the basics to write a computer game with ruby and Gosu. The presenter would type some text, then the kids would follow with the assistance of the tutors. We drew a game window in gosu, we added a player class, we added the player to the game window, then we made the player move by pressing the arrow keys.

We had a presenter,  4 tutors, and 8 kids. A tutor with two kids was ideal. We were able to keep up with their questions. If anyone fell behind, we had recorded screencasts of the material, so kids were able to catch up. The videos were really helpful; I am glad we had them.

Time just flew by, and at the end everyone was still hanging around still working on the game. Next class we will have balls drop on the player (dodgeball) and will work on what to do if the ball hits the player.

Below are some pictures of the event.