For me one of the most valuable things coding brings to math class is the idea of debugging. When code is debugged, you search for the mistakes and correct them to make your code run better, in this venue mistakes are simply part of the process and not as something wrong. We get new releases of soft wear all the time as developers build their skills, discover new ways of doing things and make code more efficient, this is something that could easily carry over to math class. If we think about having version 2.0 or version 10 of something and the excitement of a new updated version think each year’s new iPhone, we could build the same theory of improvement and trying again into our problem solving. We might have seen the problem a few weeks ago or a few months ago but we’ve learned new things and can fix the “bugs” and make our solution clearer and smoother with the new skills that we’ve learned. I would love to come up with some start of the year problems that require mathematical thinking and problem-solving skills that we could revisit in the last week or two of the year and see how much we’ve grown in our thinking. In addition, the cornerstones of computational thinking are also key skills for problem solving. If we can teach students these skills and help them develop as part of their critical and creative thinking skills, we not only build their computer science skills and fulfill ADST curriculum we also give them tools to understand mathematics and think like a mathematician.
There are four key techniques (cornerstones) to computational thinking:
- decomposition – breaking down a complex problem or system into smaller, more manageable parts
- pattern recognition – looking for similarities among and within problems
- abstraction – focusing on the important information only, ignoring irrelevant detail
- algorithms – developing a step-by-step solution to the problem, or the rules to follow to solve the problem
in my own classroom we seldom get the opportunity to use scratch or other online coding platforms. We do a fair bit of unplugged coding however and it always gets my students thinking, communicating, and solving problems. In unplugged coding my students work on white boards, index cards, or post it’s to write code for their “robot” (partner) to follow, the robot may only do exactly what is written down. While I have two sets of LittleCodr cards my students much prefer using white boards or index cards as it allows them more freedom to code. Some groups use words, others draw symbols for their robot to follow. This week their task was to make their partner do the Chicken Dance. Each student writes their code then has their partner try it, if it doesn’t work, we debug and try again. After a few tries we move to groups of 4 and the group of 4 writes a best version of the code for the chicken dance. I then demonstrate each group’s code as the final robot. The kids love these this especially knowing that at the end they get to see their teacher do it.