My Own “Programming in Scratch” Challenge

Last week was Design Review Day for my code club. In one week’s time the students were able to come up with an original idea for a game, design it, plan its creation and pitch it.  Amazing!  This time I manned the lab while Alex, my high school volunteer and a parent volunteer conferenced with each group.  Both volunteers were pleased with the pitches in general. I admit that I haven’t had a chance to review any of the completed game design documents myself.

Instead I’ve been busy working through a Scratch language MOOC on edX, from my alma mater, called: HarveyMuddX: CS002x Programming in Scratch. I’ve been excited about taking this online class since I first learned of it and started following the course professor Colleen Lewis on Twitter and at CSTeachingTips.org. The course has a nice balance of video lecture, directed “play” in Scratch and rigorous quizzes. The class has helped fill in gaps in my knowledge of Scratch. For one thing, I hadn’t played around much with the Sound blocks in Scratch, so that was a fun week.

I also learned about race conditions, which I hadn’t heard of before.  A race condition is where two things are competing to set a variable or perform two operations at the same time and you cannot be sure of what the outcome will be.  For example, below I’ve set the score to two different values when the green flag is clicked.  Which will Scratch choose?  -whichever setting wins the race.

race condition

An example of a race condition

I had fun making some little drawing projectsScreen Shot 2015-03-10 at 8.27.51 PM and a helicopter game.

Screen Shot 2015-03-10 at 8.16.57 PMNow I have to design a final project. And I have been directed to think about it first…

Rather than just diving into a project, we want you to start thinking about different ideas for things what you might do.

Hmm.. that’s like what I asked my students to do.  The tables have turned and I’m not sure how they did it, now.  I’ve been toying with a couple of different ideas for awhile now and I’m still not sure what I want to tackle.  I’m going to have to make a decision soon and get to work.

This is my favorite question in the final project design phase of this MOOC:

Think about breaking your project into a series of simpler steps. What are the FIRST three things that you would make work?

I wish I had put some wording like that in my game design document for my students.  At any rate, I will remember to ask my students how they will break up their tasks as they continue work on their projects tomorrow.

Advertisements

Rookie Mistakes

After a merited, welcomed, two-week break, we have Code Club again tomorrow.  It’s our next to the last meeting and I’m concerned. I don’t think their “create your own game” projects are ready for the showcase – I don’t think they are one hour away from being ready. There’s a lot of work to do, errors to be found, logic to be thought through, and no rigorous testing has been done. (Do I sound like a software manager a week before a new release deadline?)

I had planned to approach each of the 4th grade coders during school over the last two days and find out how they thought their project was coming along.  I talked to two (out of 23) and they didn’t seem concerned.  I actually think they were confused about what I was asking as if the two-week winter break had wiped out all thoughts about Code Club.  So maybe I’m the only one who’s nervous about this. This is my rookie season as a Code Club leader, I must remember.  Maybe everything will get done on time?

Yeah, right.  Here’s the thing.  I recall the last Code Club meeting as being less than productive.  I believe others also found it frustrating. Besides the fact that it was the week before Christmas and two days before vacation, things didn’t go as well as I’d hoped. Students were stuck, teams weren’t working well together, projects were behaving strangely, stuff was lost, etc. That kind of stuff happens. I expect some of that, I’m not a complete rookie.

What bothers me most is not every student was able to get some help. On the whiteboard, next to the list for using the microphone, a student started a list for those who needed help and added their name.  I didn’t even notice the list until the end. It’s a good idea, really, and we’ll start a list like that tomorrow.  Not really sure what to think, but I feel that I’m letting them down. The list was an interesting expression of frustration. On one hand I expect them to need some help as they are just beginner Scratchers, but perhaps am I helping too much or unevenly. Maybe I haven’t provided enough foundation to give them the confidence to persevere in troubleshooting? Or the projects were too complicated and it was a failure in the design review process. More things to learn.

Truth is, I don’t have that much more experience using Scratch than they do. Problems and questions have come up that I didn’t have the answer to.  For example, a couple of students wanted to add gravity into their game.  Turns out there are lots of ways to simulate this, even more than those listed on the Scratch Wiki for Simulating Gravity (I didn’t even know about the Scratch Wiki until researching the gravity problem).  One team is using a timer to simulate gravity.  Another is using simple direct movement method.

Screen Shot 2015-01-06 at 10.48.50 PM

I’m sure more stuff like this will crop up tomorrow. Of course, I need to remember – rookie season, rookie mistakes.

Key Steps in Game Design

For the next four weeks of Code Club the students are going to make their own game in Scratch. This is the reason they joined.  This is what they’ve been telling me they want to do. I could just let them go at it but I want to help them be successful so I’m making them follow some guidelines.  In fact, I’m having them create a detailed plan, put their ideas down in a GDD (Game Design Document), and pitch it to me or another adult volunteer before they start coding.

Last time we met I handed out this Scratch_ Game Design Document – Google Docs  GDD template. I created it after looking at a number of sources from the video game industry and from some online teaching projects. It’s a revised, more detailed version of one I used last year with my 4th grade math group when they made Scratch Math Games.  Code Club members have the choice of working with a partner or by themselves.  The game planning was their homework. It is due tomorrow.

I also sent home Code Club World’s Create Your Own Game Project idea packet for some basic directions.

The last time Code Club met, we had a special guest speaker. She is a parent volunteer who manages a team of software developers and she came and gave a nice presentation on key software development steps: Planning, Testing and Time Management. For a fairly dry topic, the students were respectful and attentive, which I greatly appreciated.

Software design steps outlined

Software design steps outlined

Here are some of the great points she touched on:

  • Make a plan – think about the steps it takes and how long to do each step
  • What if I want to add a really cool thing that was not in the plan? Make your plan flexible
  • Sometimes you have to move on even if something is not perfect
  • Test and test again – test often, get other people to test

These are real world ideas from, well, the real world.  They seemed to take the presentation seriously and I hope that means they’ll do a good job on their pitch tomorrow. I’m excited to see what they’ve come up with and a little nervous, too.