CMU Project Rwanda

Scratching the Surface of Programming by jdebner
August 27, 2010, 3:45 am
Filed under: Planning, Teaching Experience

Scratch is a programming application based out of MIT, available on the OLPC XO. It features block “drag and drop” programming for beginners. We were a team of four people who taught basics of programming to a class of about 20 students per session, totalling about 120 students. Our sessions covered 4 days with a final showcase day.

Lesson Plan prior:

Our goal to achieve over the period of four days was to build a game. This was to show the students that programming could be fun and there were lot of things you can achieve through it.

Games considered:

  • Maze
  • Paddle
  • Bouncing ball

We are going to tell you what we initially planned for the day, then what we actually achieved and add a short commentary about our reflections for the day.

Lesson Plan:

We had one person lead the class(Josh- the Umuzungu) and the other three go around class, helping the students build the program.

Day 1:

Previous plan:

  • We were trying to feel out what the students knew and what methods for learning would be most applicable for them, whether it is teaching on the board or acting it out
  • We wrote the program ourselves to figure out what is the easiest way to teach the students
  • We learned about how scratch calculates the center of an asymmetrical object (that you draw) to bounce off the walls at point of contact
  • Our plan was to do little pieces of the game each day and combine all the parts of the game at the end to show them an end-product
  • We were aware that the 5th graders we were teaching had used Scratch before during a malaria-awareness camp


  • Ice Breaker: We told the story of our coming to Rwanda which is a version of Simon Says. We did the following actions: rowing (action: row on your knees), flying (action: move arms while standing), waiting (action: stand against the wall) and driving (action: drive while sitting)
  • We taught the concept of angles at 90 degree interval, using a 2-D picture of a cat
  • We covered direction by making students stand up and face that direction
  • We drew sprites and got them to move on the screen


  • We faced technology issues all day because of handing out laptops, checking if scratch was available and getting scratch loaded
  • We did not get to teach much and we weren’t connecting well with the students as they did not seem to understand it well
  • One of the reasons for the disappointment was that we were trying to teach them the elements specific for the game and we weren’t presenting it in the actual context that they should learn it in
  • Our demo’s weren’t good as we were presenting a 2-D diagram in 3D and did not end up using the blackboard at all on the first day

Day 2:

Previous plan:

  • Go through basic introductory programming ideas and teach basic structural elements like loops and some logic like greater than and less than and so on


  • Ice Breaker: Name and actions, where everyone in the room assembled in a circle and said their name and did an action and everyone else imitated it in the room
  • We taught sound which we weren’t going to even use in the game but just to teach the concept
  • We imported a sound and then we had them create a simple conditional statement, if statement about some number is greater than another and then play the sound. We changed the numbers and tried different logical statements, so that they could understand the conditional statement and the math involved
  • We taught if, then if else, and tried to explain that having a statement after the else or within the if-else block and tried to show the difference. We demonstrated it by making people stand in a line and give them a number,  we also had a gate keeper who would determine if or else and would tell the if or else option to act
  • Programming basics taught were for, while and forever loops


  • One of our best days as the demonstrations were effective as we did not have to worry about 3D figures as we used students demonstrate and we could tell if they were understanding logic or not because the entire class participated and they could correct their peers if one of them was wrong
  • Each class got into a little different stage because of how accustomed they were to scratch
  • In terms of flow it worked well with teaching concepts and wrote code on the board, so the students could see the program. The code wasn’t written on the board, till the students had already learnt about it
  • The most effective way to use a translator was for Josh to talk a bit longer and then the translator could put more of it in context. This way Josh could say a bunch of things, and the translator could clarify and Josh could go around seeing if everyone was moving ahead collectively or not
  • It was important to have the other three people on the team to go around and see if all the students were caught up or if they needed any help. Melvin made sure the board was up-to date and everyone helped with technical issues like not having scratch loaded, the computer freezing or mouse issues

Day 3:

Previous Plan:

  • The goal was to get the first part of the game working, which was to move a fruit plate horizontally. We want to teach that if we moved to the right, we added to the x variable and add to the y axis for moving left


  • Ice Breaker: Ninja
  • For starting the game, we taught about X direction motion, and had to decrease the size of the fruit basket because it was big for the screen which would make the game really easy. We additionally taught them about key presses, to move the basket


  • The problem we faced was that we had to make sure that the students saved this game, so we could load it the next day to complete it. It was an issue because of multiple laptops and multiple students
  • Scratch is not integrated into the operating system as other applications. So we have to save it, just like how we need to make sure we quit properly to close scratch
  • We made sure we made our own copy and placed it on a  flash drive, so that just incase students hadn’t saved it, we could load it for them and everyone would be on the same page on the next day
  • We had to teach the numberline to students as well because dealing with negative numbers could be complicated for fifth graders. We weren’t prepared to teach it but it was necessary to understand the concepts

Day 4:
Previous Plan:

  • Finish up the game, add the dropping banana


  • We finished the game by adding the banana, made it smaller, dropped it from the sky and then from different places in the sky and we added a points counter as long as the banana was caught in the fruit basket
  • For demos, we made a student walk back and forth when we told them which direction to walk in and we taught about the y-axis on the board with a number line and sponge


  • It was a very rushed day because we had to finish building the game.
  • It was a fine balance between making the students understand the programming behind the game and them having something tangible in the end
  • The random number generator was confusing for the students and was a difficult concept to grasp

Common observations:

  • Students loved playing games
  • They like live-demonstrations and are very willing to volunteer
  • Interacting with the students with an ice-breaker before starting class was important to make them feel comfortable
  • Even though the students can speak English and prefer using scratch in English, it was necessary to have a translator to bridge the gap
  • They are very excited to learn and were open to learn. They were very persistent and patient with their laptops
  • We only taught for four days but we could see who were the leaders in the classroom, who understood the material and we made a conscious effort to make sure that everyone was at the same level

Problem encountered:

  • Mousepad when covered with dust, became harder to use.