Each year #HourOfCode rolls around and I have a great time generating enthusiasm about coding with kids and teachers. But I was itchy to push coding activities further into our curriculum and truly align coding activities with our curriculum. I was so pleased when I found the middle school page at code.org and began reading about Project GUTS (Growing Up Thinking Scientifically).
Project GUTS has developed professional learning and student modules for teaching scientific concepts while building virtual models and simulations through code. There are three units which align with traditional middle school science curriculum: Earth Science, Life Science and Physical Science. I immediately reached out to my 7th grade Life Science team and we spent an afternoon playing with the lessons and learning our way around StarLogo Nova.
It was very powerful to have time to watch the teachers struggle and conquer the coding themselves. They had rich conversations about what is like to learn something new and how it felt when some teachers got it and others didn't. From there we planned how we would want to organize the lessons with the students and how we could make accommodations for our English Language Learners and Special Education students. The lessons that have already been written by ProjectGUTS are excellent and have great unplugged activities to go along with the coding lessons which help drive home important computational thinking processes.
As the educational technology coach, I scheduled myself so that I could be in most classes as the teachers first introduced the unit and the project. We spent a lot of time initially building up why we would do coding in science and how it relates to work real scientists do. We also emphasized that these lessons were all building towards the opportunity for them to build their own scientific simulation.
I think the most striking thing I learned as we implemented the lessons with the students was that coding is one of the best self-corrective lessons out there. If you run the code and it doesn't work, you know you need to fix it - you don't have to wait to see what score you got or wait until the big game to see if you know how to shoot the ball - you just hit run code and see what happens. This is one of the most compelling parts of coding for students.
I also saw that many of our students struggle with open-ended assignments. When we did the first lesson "Painting Turtles," most of them were fine with getting the code to run and have five turtles moving in a circle leaving a trail behind. But when we told them to "mess it up" by trying out other commands and seeing what happened, some were at a loss. Where should I go? What should I try? There was a definite moment of panic as they realized there were no directions for this part.
The hesitation didn't last long though. It would only take one or two kids to find the dragons or add sound effects, and the rest of the students were off and running. Pretty soon students were all calling my name at once. Not to ask me how to do something but to show off what they had just done. It was wonderful to watch them turning their computers to get their classmates attention to show their rainbow cube patterns or what happens when you change the camera view. I especially loved the pleased smiles on kids' faces who had come into the class looking despondent or just resigned.
As the lessons progressed, the coding challenges got more difficult and complex. Students were now coding simple simulations where "turtles" (small colored blocks) reacted when they came into contact with other turtles. Next they needed to start creating traits of the turtles that would change as they gained or lost energy. As the coding got more difficult, students needed to be persistent, to try new approaches, and to ask for help as they needed it. One strategy that we found helpful was to build "starter" programs that contained the code the students needed but not in the right order, much like an English teacher might provide sentence starters for certain students.
On our culmination day last year, administrators and curriculum specialists came in to see the simulations students had built. It was powerful to see how complicated and varied students various simulations were. By providing open-ended challenges to the students, many went far beyond anything we could have thought of. And those students that found this coding challenging and new still created solid simulations and by their admission, learned a ton.
We are just re-launching this coding project this year. We are starting sooner after #HourOfCode and giving more space between lessons and finding more ways to let kids code to show what they know about science. I look forward to seeing what kinds of simulations the students create this year and how we can support all learners to embrace the challenges of coding and become computational thinkers.