Saturday, 18 April 2015

How Coding fits into the Curriculum

A little over a year ago, I had never coded anything before. I knew that coding ran computers, and programs, but hadn't ever tried to play with it before. I was starting to give my students opportunities in class to choose what they want to learn about, and I was hoping coding would come up. It was a goal of several students to code a game before the year was over in my Grade 3/4 class. I found Code.org online, and we did the Hour of Code that year. We really enjoyed the chance to "remix" Flappy Bird and make it into our own games. You can try it here: http://studio.code.org/flappy/1

Gr. 3/4 student explains how he modded Flappy Bird on Code.org from Scott McKenzie on Vimeo.
This year I started earlier with coding and introduced my students to coding as a way to teach them about angles in 2D shapes. We used Hopscotch on the iPads and created all sorts of shapes. I started the class off by showing them how to draw a line, make a 90 degree turn, and draw a second line. After that I turned them loose to see what 2D shapes they could create. Here are some of the designs they came up with. This year my students understand angles much better than they have in previous years.

If you don't have access to iPads, then I recommend snapcoding.com. Here is a perimeter question created in snapcoding:


Then I share the code I used:
Many Math Expectations can be covered, and connected to coding. Measurement, Geometry and Patterning are the easiest to link:


Measurement:
Students estimate, measure, and describe length when deciding how long/far a “Sprite” should travel for a given purpose.


Geometry and Spatial Sense:
Students compose and decompose common two-dimensional shapes using a “Sprite” and a “Pen Down” code to draw various 2D shapes.
Students describe the relative locations of objects using positional language in order to accurately complete a task when coding.


Patterning:
Students  identify, describe, extend, and create repeating patterns when using a “Repeat” code to continue a given series of actions to meet a goal.

I wanted to do more, and keep growing with my students. I had seen Scratch a few times and it seemed a bit confusing. There seemed to be too many choices, and I didn't understand all the possibilities with it (I still don't), but I slowly dipped my toes in the water and tried a few things. What really opened my eyes to what can be done was when I learned enough to get my students started working with Scratch. Once they started playing with it, I played along with them too. We learned how to do lots of things, and new ideas pop up every week.

As always, my students impress me so much. I was teaching a lesson on how to write persuasively, and students were using several options to create an advertisement. One of my students asked if she could make her advertisement in Scratch. I said, "Why not?" She made her ad in the same time frame as the other students, and it was funny and engaging.

Coding apps like Scratch Jr., Hopscotch, Scratch (and many others) allow for unlimited opportunities to create narratives, poems, persuasive writing pieces, Science and Social Studies reports, ect. 
Here are some links to Language Expectations:

Oral Communication


As the “Pilot” in the collaborative coding roles, a student listens in order to understand and respond appropriately in a variety of problem-solving situations to successfully write efficient code to complete a desired action.


As the “Navigator” in the collaborative coding roles, a student uses speaking skills and strategies appropriately to communicate with different partners, in a variety of coding activities.


After completing an algorithm, students reflect on and identify their strengths as listeners and speakers, areas for improvement, and the strategies they found most helpful in their roles as both “Pilot” and “Navigator”.


Reading:
Students read and demonstrate an understanding of informational text, using a range of strategies to construct meaning, in order to successfully complete a coding challenge.


Students use knowledge of specific coding language and cueing systems to read fluently.


Students reflect on and identify their strengths as readers, areas for improvement, and the
strategies they found most helpful before, during, and after reading, using the immediate feedback provided by running their coding algorithm.


Writing:
Students generate, gather, and organize ideas and information to write to explain clearly the steps to take to complete a coding challenge, for an audience of their peers.


Students use editing, proofreading, and publishing skills and strategies, and knowledge of language conventions, to correct errors, refine expression, and present their work effectively.


Students reflect on and identify their strengths as writers, areas for improvement, and the strategies they found most helpful at different stages in the writing process, using feedback from the audience they share their writing with.


Media Literacy:
Students create a variety of media using various “Stages” and “Sprites” for different purposes and audiences, using appropriate forms, conventions, and techniques.


Students reflect on and identify their strengths as media interpreters and creators, areas for
improvement, and the strategies they found most helpful in understanding and creating media with coding algorithms.

In Scratch you choose your stage (Setting), your sprites (Characters), create events to get the story started (Rising Action), but the true power of coding is that it can do so much more. As educators I think we are always asking ourselves how can we do more technology. How can we allow students to create, build and author things that would never be possible without this technology?

My students started by remixing games already on Scratch. They would play the game and then change things in the game. This was their insertion point into coding. They just started doing it this year, so this is scaffolded learning at its best. They change lines of code, and get immediate feedback from the game. I wanted them to do more than that, I wanted them to build their own games, but also to tell a story.

That was when I had my "Aha!" moment, I always wondered what happened to the "Choose Your Own Adventure" stories I had enjoyed as a child, and I realized they have morphed into the Role-Playing Games that so many people enjoy today. If my students write a Role-Playing Game together, then I would say that they have elevated their story writing skills to a new level.

Coding scripts make sense when we need them to do something. It would be hard to explain how an "If - Then - Else" statement works, but if they want to write an interactive story then they need this code. In the story the main character sees a rock on the path. The character has to decide if they will pick the rock, and keep it for good luck, or pass on by. When each of these paths are followed by the character, a different action follows. "If" character touches rock - "then" it disappears (into his pocket). "Else"If the character walks on by the rock, and the rock follows him by moving along as well.

By making the coding activities authentic, the students will remember them better. As we write our stories we will want to do something, and as we problem solve to make it possible, we will learn more about coding. So how does coding fit into the curriculum? In a million ways! The more you try it, the more you will see ways to connect it in meaningful ways.
Here is one last thing that will make students very excited about writing headlines:
Go to a news website:
Then right-click on the page and select "Inspect Element". This will show the HTML code behind the scenes. Now find the heading you would like to change. Right click it, and select "Edit HTML". Students have a blast with this! It doesn't permenently change the website, so it is a harmless way to show students how web pages are built.
Happy coding!

3 comments:

  1. This is amazing. Love all of the ideas. Is it okay if I share this with colleagues and at presentations? Again love your ideas and Thanks for blogging about them.

    ReplyDelete
  2. Thanks, Jonathan. Always happy to share, the more teachers we can get trying coding, the better. I became more interested in coding because of all the sharing other educators do, like @mraspinall.

    ReplyDelete
  3. Hey Scott,

    We are doing much of what you are describing with our Jade Robot (https://www.mimetics.ca) but in the physical world rather than on a screen. We find that the students (we start as young as grades 3/4) get a lot more out of the experience being able to relate time to actual distance traveled or turned (mounting a pen to the robot and letting the kids measure the distance moved). The Jade Robot has a built in user interface which means that the students can program on the robot itself eliminating the need to go to a PC/tablet/whatever as well as allowing its use in a PCless classroom.

    Sorry about the plug, but I'd love to follow up and talk to you about what you are doing. Please email me at info@mimetics.ca

    ReplyDelete