Many educators get inspired to do a special coding lesson, such as during Code.org’s annual Hour of Code event. But coding is not only great as an elective or extra activity, it can also provide an avenue to apply and deeply engage in mathematical concepts. Perhaps we should consider including coding as part of our mathematics explorations more often!
For instance, our board member, Mike Lefkowitz wrote about how mathematics provides the foundation for the other STEM subjects, including science, technology and engineering. Similarly, the president of the National Council of Teachers of Mathematics, Matt Larson, made a compelling argument that math education is STEM education. So maybe it makes sense to build these skills in conjunction with one another, and support students in identifying those connections.
Other articles have also explored upon how coding can help students make sense of the eight mathematical practices, and here I endeavor to showcase more examples and anecdotes from colleagues working in technology.
Coding Builds Problem Solving Skills and Persistence
The first of the Standards for Mathematical Practice is most easily aligned with coding as well as mathematics: make sense of problems and persevere in solving them.
Problem-solving skills are almost unanimously the most important qualification that employers look for….more than programming languages proficiency, debugging, and system design. Demonstrating computational thinking or the ability to break down large, complex problems is just as valuable (if not more so) than the baseline technical skills required for a job.
- Hacker Rank (2018 Developer Skills Report)
Creative problem solving skills are not only important for future jobs in the technology space, but others as well. In a survey from Adobe, 85% of educators and 84% of policymakers agreed that problem solving skills are in high demand today for senior level/higher-paying careers.
What can help students build persistence in problem solving? Students who are actively engaged are intrinsically motivated to persist through challenges.
Instead of starting with the coding topic, think about starting with a problem your students want to solve and brainstorming on how you can use coding (and mathematics) as a tool to solve that problem (or part of the problem).
Coding to Promote Abstract Reasoning
The second standard of mathematical practices is to reason abstractly and quantitatively.
“I use Algebra thinking a lot,” said Javier Mendoza, software engineer at MIND Research Institute. “Algebra requires you to look at a function and decide what is missing to make this work. Same with coding. Whether it's coding for an app, a game, or website; you are a detective in the digital/math world trying to solve the values required to get the computer to equal the final value."
I'm interested in Javier’s description of a math detective. Detectives use both the physical (clues, people, interviews) and the abstract (motivations, re-creation, logical deduction) to solve a crime. It requires a certain flexibility in going back and forth between the abstract and the physical and understanding the relationships between the objects.
Algebra taught me how to figure out missing number values, but it also taught me how to look at the problem, figure out what's missing, and then figure out how to make it work.
-Javier Mendoza, MIND
Another software engineer at MIND, Bryce Walters, also references the importance of abstract thinking when designing games for ST Math: “I think there is a shared thought process when describing problems and defining solutions in code and in mathematical terms. For example, the number 16 can be described as, (4 + 4 + 4 + 4) or (4 * 4) or (4 ^ 2) or (16), but each scenario describes a different situation. It is necessary to determine the meaning of the value and the relationship that the situation is describing. A similar process needs to be followed when developing code. I know I need to tell JiJi to walk to the other side of the screen, but what is JiJi? What is walking? What is the other side of the screen? All of these actions and elements and relationships need to be abstracted and defined in code to define the algorithm that, in this case, can move JiJi across the screen.”
One of the common abstract ideas in both algebra and coding is the concept of variables. Check out this physical activity on variables to introduce abstract thinking to students.
Coding as a Way to Model Mathematics
The third mathematical practice is to model with mathematics. According to the standard, students “are able to identify important quantities in a practical situation and map their relationships using such tools as diagrams, two-way tables, graphs, flowcharts and formulas.”
Sometimes, however, there’s too much data to write out in tables and put into graphs and formulas by hand. That’s where coding can be used as a tool to create better mathematical models.
Not only can students build or use tools to solve problems, they can create tools to help others. When students create an application or digital game they are actively using their skills in mathematics to create something that others can use.
For younger students, check out the graph paper programming lesson from code.org for an introduction to algorithms. For older students, activities like programming a simulator on a calculator can help students use the tool to create meaningful and dynamic graphs.
A snapshot of the whiteboard at MIND Research Institute, showing the work of mathematicians, designers and web developers.
Like Mathematics, Coding Requires Attention to Precision
The sixth mathematical practice standard is to attend to precision. Similarly, in coding, precision is crucial in order to complete your objective.
The best and worst thing about computers is that the computer will do exactly what you tell it to do.
- John V. Guttag, Introduction to Computation and Programming Using Python
This is partly why problem solving and persistence is so important - it’s rare that you’ll be as precise as you need to be in your first attempt. Even if the code appears to work for your input or solution, what happens later when you try something different?
Like visual instructional program ST Math, the informative feedback of code shows students their solution and how it did or didn’t work. Even a lack of feedback shows that something didn’t go as imagined. In the feedback is the information on how to improve on the solution. Neuroscientists call this process of hypothesizing, acting, observing and adjusting the action the perception-action cycle.
More Fun with Math and Coding?
All of my math training had honed my analytical skills and general ability to think in a structured and logical manner when approaching a problem to be solved.
- Phil Johnson, ITWorld
There’s still other mathematical practices I didn’t get to: Use appropriate tools strategically, look for and express regularity in repeated reasoning, look for and make use of structure, and construct viable arguments and critique the reasoning of others.
How do these practices relate to coding, or how do you use coding to continue and build upon the practice of these skills? Let us know in the comments below or on Twitter @MIND_Research!