An Hour of Code with Young Friends, Part 1: Hacking and Open Source

I recently completed with my first Hour of Code experiment with a young friend. I intentionally did not explore too much beforehand, wanting to experience the learning process alongside the girl (I will call her Z). I was curious what I would learn by watching a young digital native engage with coding.

Zen

Z is 10 years old, and currently a fourth grader at a Waldorf school. Waldorf schools discourage children’s use of technology at school and home. Her family takes an inspiring approach to this recommendation. They choose to not completely swear off technology, but rather to have regular conversations about when and why technology can be appropriate. Thus, Z does not use computers or watch media at school, but she engages in these things very minimally and very mindfully at home. This provides an interesting context for coding with her: She is technically a digital native, but does not actually engage with digital media herself very often. Here’s a little bit more about her:

  • She loves animals, and wants to be a vet when she grows up.
  • She is endlessly creative and self-motivated, loves art, theater and making all different types of things.
  • She insists on solving real world math problems in her head when they present themselves (before adults can tell her the answer).
  • She is compassionate and thoughtful. As long as I’ve known her, she has used gift-getting holidays as opportunities to raise money for animal charities.
  • She loves reading, and has been known to read a novel per day.

We began by watching the Hour of Code Video Introduction together, which got her excited about being one of “10 million” students to try “An Hour of Code” (and the number is currently much higher).

Code.org offers several different tutorials that students can try. We looked through several together, and I asked Z to choose which one looked the most interesting to her. I’ve personally been a bit wary of the Disney-sponsored Frozen-themed tutorial that has been promoted this year (another blog post for another day), so I felt personally excited when Z bypassed the princesses and chose the one titled Write Your First Computer Program.

The tutorial was pretty simple, and the instructions were easy to follow. The biggest challenge at first was to figure out all the tiny details, like making sure your character is facing the right direction before making him walk forward.

How it works

In the example below, if you want your little cartoon zombie to eat the sunflower, you need to first make him walk forward, then make him turn left, then make him walk forward, then make him turn right. This needs to repeat six times. If you make him turn before walking forward or walk forward too many steps, he will walk off the path and fail in his mission.

codeorg4

Rather than typing in lines of code, you snap together visual blocks that represent lines of JavaScript. The thinking involved in constructing the sequences of commands is the vehicle for comprehending the sets of rules involved with programming. There are many ways to construct sets of blocks to get the zombie to the sunflower, but some ways are more efficient than others. Tutorials like this are not teaching young children the grammar and syntax of specific programming languages like JavaScript, but they are teaching the concepts of coding. The opportunity to problem-solve and think logically is what’s important.

At any point, you can switch your view to see the actual code you are snapping together, and I kept asking Z to look at the code because I was curious. She thought that it was cool that she was constructing code, but didn’t really care about seeing the actual JavaScript very much. This didn’t seem to matter at all, but I couldn’t help but wonder: At what point does it become relevant to care about seeing the code?

Perhaps the biggest challenge for Z was the very same challenge that I encounter when I’m doing Codecademy tutorials…you have to conform to what the tutorial wants you to do. Once you learn the basic concepts, the naturally creative person wants to explore and play. You can do whatever you want in the tutorials, but when you run your code, the program won’t let you move onto the next level until you do what it’s asking. It was about halfway through the tutorial that Z started wanting to do her own thing.

A born hacker?

At one point, the tutorial wanted her to make the zombie move around the course in a “C” shape by using a “repeat” block with “move forward” and “turn right” inside (rather than stacking several “move forward” and “turn right” blocks on top of each other). This means that you can use only three commands to get the Zombie to his goal, rather than six. Z knew exactly what the tutorial wanted her to do, but wanted to do it her way. She did what the tutorial was asking by incorporating the “repeat”, “move forward”, and “turn right” blocks, but insisted on creating a repeating loop of “turn left” blocks at the beginning, to make the zombie do a little dance before completing the course. Thus, she did what was asked and completed the goal, but in her own way. Creativity ruled the moment!

Urban Dictionary defines “hack” as: “a clever solution to a tricky problem”, or “to mod or change something in an extraordinary way”, and I realized that perhaps Z was a born hacker.  She was determined to complete the goal, but sought her own rules of engagement, which made me proud!

Supporting creativity

After completing the tutorial, I sensed she was ready for a more open-ended experience, and introduced Scratch. This was another program that I myself had not played with, and quickly learned that it was pretty complex! It uses the same visual block format, but with tons more possibilities. You are basically given a blank canvas to use to create, which is a little overwhelming at first. Fresh off the tutorial, Z’s first reaction was “I don’t think I get this”.  This was interesting, because she didn’t like the confines of the closed-ended tutorial, but was then intimidated by the completely open-ended one. I just repeated the following a couple times: “This one lets you do whatever you want. You just have to play around and discover the possibilities” It took her all of about 10 minutes to get past her intimidation and figure out some basics (as I sat and watched in awe), and after about an hour she had created a video entitled The Mosaic Cat and the Cheese Puffs:

Screen Shot 2014-12-09 at 2.34.19 PM
Click anywhere on the image to view the video in Scratch. Impressed? You can leave Z a comment!

I couldn’t believe that in such a short amount of time, she had figured out how to layer two different scripts that combine several different types of commands over a background. The “inside” (code) of her program looks like this:

Screen Shot 2014-12-09 at 2.39.07 PM Screen Shot 2014-12-09 at 2.39.28 PM

A lesson in open-source
Z was excited about the certificate she got from completing an “Hour of Code”, but perhaps even more inspired by her experience with Scratch. After completing her video, I explained that we could make her an account of her own and share her video with others. She was a little wary of this at first, and timidly replied “Do I have to?” Of course she didn’t, but I explained why she might want to:
“When you make an account and share your work in Scratch, other people can find it and see it.  They can leave you comments or “like” your project. It might give them ideas about their own projects, or just make them laugh. They can also add their own creativity to your project by starting with your code and modifying it according to their own ideas. Then they can share it back with you and you can see what they did. You can write each other messages and talk about ideas. This is what ‘open-source’ means…it is a way of sharing and collaborating on coding projects. When everyone works together, the end results get better and more interesting.”
This explanation completely spoke to this girl who is collaborative and social by nature. She excitedly shared her video, and looks forward to any interactions it might provoke. If you are inspired by her, feel free to leave her a comment or modify her video according to your ideas!

Reflections
Overall, I was completely inspired by this experience. After just three short hours, this girl had learned some important fundamentals, and was excited about the possibilities of coding. She clearly saw it as yet another outlet for her natural creativity. We have every intention of finding more time to code together, and I can’t wait to see what she does next!
Here are a few reflections I was left with:
  • There is a time and place for guided instruction, but also an important time and place for open-ended exploration. What is the balance?
  • This video was the product of a fairly open-ended exploration…an experiment in combining different elements to see what they do. How would Z react if I asked her to define and plan a goal first and then try to figure out how to execute it?
  • What would we learn by spending time looking through other Scratch projects to see what others have done?
  • Could we find a project we like, start with their code and modify it?
  • What new thinking would be inspired if we invited another similar-aged friend to explore Scratch together with Z?

Interested in learning more about digital nativism? Check out the article “Digital Natives, Digital Immigrants“, by Marc Prensky.

Advertisements

2 thoughts on “An Hour of Code with Young Friends, Part 1: Hacking and Open Source

  1. Hi Lauren
    What I did find out with the codeacademy RUBY was that once you have done what they ask and it says you can move on, there is a little icon at bottom right which lets you back in to the coding screen, and you can put whatever you like there. Just ignore the error messages and keep going, doing “your thing”.

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s