I’ve been a teacher for over 15 years, but I've only taught computer science for only the last three. I've always taught grades 6-8, and I've spent some time as a gifted specialist with both elementary and high school students, but math is my forte. Throw a middle school math topic at me and I can tell you what grade level it’s taught at, what students are going to struggle with most often, and probably 2-3 good activities to go along with it.
My journey into computer science has been unexpected, but surprisingly common.
Principal: “I’d like you to teach computer science next year.”
Teacher: “But… I don’t know anything about computer science.”
Principal: “That’s okay, we’ll send you to training.”
It was through that journey that I got to know the folks at Firia Labs, and as they taught me about coding, I taught them about education. Specifically, what teachers need. ESPECIALLY teachers like me, who don’t have a CS background. It’s been a rather serendipitous crossing of paths.
"My first battle is helping reluctant learners to enjoy math,
even if momentarily, so they can have some success."
Now, if I had a dollar for every time I’ve thought, “Man, I wish I’d had this CodeSpace lesson when I was teaching math!” I could retire to a beach somewhere and spend the rest of my days drinking fruity drinks and reading for pleasure. The thing is, I LOVE math, and I love teaching it. But by middle school, kids have already firmly parked themselves into one of two camps: Love Math or Hate Math. My first battle is helping reluctant learners to enjoy math, even if momentarily, so they can have some success. You can’t be successful at something you hate. Take laundry. I HATE doing laundry, so I rarely achieve the goal of taking a load from hamper, to washer, to dryer, to folded, to put away, in a day. (Or even a month, but I digress.)
Teaching math and computer science together is a great way to move kids from the "I hate math" to "I love math" camp, because they’re usually in the hate camp for one of two reasons. Either they haven’t been successful, or they don’t see the point. Helping students be successful at math is a skill good teachers can learn and improve upon year after year. Each year, there are MORE strategies and products at our disposal to foster learning.
Despite these technological advantages, motivating students seems to get harder every year. Today’s students want to know the why before we ever get to the what. They’re tech-savvy enough to know that computer scientists rule the world, and they want a part of it. And we can use that to our advantage.
A number of schools are integrating computer science into their math classes instead of having a separate elective. I think that’s a great way to motivate students. And as an added bonus, each lesson we cover in CodeSpace, whether Jumpstart to Python or Python with Robots, hits every Standard of Mathematical Practice, and a lot of the skills standards too.
Make sense of problems and persevere in solving them.
Perseverance is a difficult skill to teach on its own, but it's built in throughout the CodeSpace platform. I have had to kick students out of my room who were determined not to leave until their program was working. I have never had a student want to stay until they could finish solving a particularly challenging equation.
"Having a reason to think abstractly and
quantitatively makes all the difference."
Reason abstractly and quantitatively
Branching is a computer science term that simply means to do one of a multitude of things depending on the scenario. We do this inherently throughout our lives, but again, it’s a hard skill to teach in isolation. Having a reason to think abstractly and quantitatively makes all the difference.
Construct viable arguments and critique the reasoning of others.
What did you do here? Why? Instead, could you…? These are all questions I asked of my students daily, and soon heard them asking each other. At first, if I asked them why they chose to code something a particular way, they would immediately backtrack and apologize for doing it “wrong.” I had to reassure them that there’s nothing wrong with approaching a problem in a different way. Just explain why you did it. And accept that there are multiple ways to tackle each case.
Model with mathematics.
There’s nothing like a good flowchart when trying to reason through a complex problem. Students rarely want to show their work in math, but when it comes to programming, they almost always need to have a plan of attack. They soon learn that planning through flowcharting or some other pseudocode will make their job easier in the long run.
Use appropriate tools strategically.
Strategically creating a tool that can be used for a specific purpose is a powerful “aha” moment. Do you want to understand the history of technology? Go back to before an object was invented. What was the problem? Who encountered it? Who decided to solve it? Understanding that everything we encounter has been engineered in some way to make our lives easier or more enjoyable is a big first step in understanding the engineering design process. Instead of just using a tool, create the tool. Or take an existing tool and make it better.
Look for and make use of structure.
A main tenet of computer science is that a) a computer will only do exactly what you told it to do and b) it will do it in exactly the order you told it to do it. Structure matters!
Look for and express regularity in repeated reasoning.
Algorithms, functions, abstractions; these are all computer science terms that mean repeated reasoning. If a student can understand it’s easier to create a function that increments a variable by 2 each time, they can understand that multiplying by 2 is repeated addition.
"Yes, computer science can teach mathematical skills, but really,
it’s about teaching mathematics as a practice."
Yes, computer science can teach mathematical skills, but really, it’s about teaching mathematics as a practice. It’s the difference between people who say they’ve never used Algebra since graduation and those that realize they use Algebra every time they budget their paycheck, or figure out how much paint to buy, or plan a vacation. If you don’t understand why you need to learn something, you won’t even realize when you’re doing it!
Schools are realizing that PBL (Problem-based or Project-based Learning) is the path to students deepening their understanding across subject areas. Computer science cannot be taught in isolation from other core subject areas. But what if it was taught in tandem with a math class? That is the question that’s been percolating in my brain this summer as I talked to teachers from across the country. Would that make both subjects - math and computer science - that much more meaningful?
I started by looking at Firia Labs’ Jumpstart to Python curriculum. With my math standards nearby, I went back through each lesson. Every time a math standard was introduced, I made a note. Most of the standards are from Math 6 or 7, with a couple in fifth or eighth grade as well. Then I looked at a 36-week pacing guide for each content area, Math 6 and Math 7. How would the projects line up with a typical scope and sequence? Pretty well, as it turns out. There were a couple places I changed the order of CodeSpace projects to better fit the math unit of study, but overall, it was shocking how well the coding projects complemented the math units.
The next consideration is how this would fit into a math course. Teachers are already packed to the brim with content. Pile on weeks lost to standardized testing and typical interruptions like assemblies and field trips, and it’s hard enough to fit everything in.
But what if instead of thinking of it as one more thing to do, we instead thought of it as teaching problem-solving skills. Would you make time for it? I could find half an hour twice a week for students to code. Or I’d make it a center and students would rotate through daily. Or I’d check out a Chromebook cart and do coding Mondays, using that time to fit in small group math intervention as needed. Or let students who didn’t need to do test corrections or make-up work do coding instead. If I thought it was important, I would make time for it.
And that day when your struggling student begged to stay late to finish their program, or took over a small group and explained how to write a function, or proudly showed off their program and asked if they could take a video to show their parents? Yes. You’d know it was important. And you’d make the time.
Firia Labs wants to make meaningful curriculum for students, while making life easier for teachers. You can use the ready-made resources to give CodeSpace a try in your math class.
If you want a loaner kit to try out Jumpstart to Python free for a month, contact us!