Computer programming and math do not seem to mix to a lot of people who aren’t “in the know”, especially students. (For what it’s worth, administrators at schools probably don’t either – I had to convince mine.) Yet, teaching the core tenants of computer programming to middle/high school students can be a powerful way to implement some explicit and many implicit areas of the curriculum in ways you probably never thought about before.

I have two experiences with attempting this in my high school teaching, at my first school with 8th graders and with juniors/seniors at my last school. In each case, I was really satisfied with the results.

I’m also a big fan of project-based learning. There’s research to support both project-based learning and teaching programming in mathematics, so I decided to combine the two during these two. With my 8th grade honors Algebra I class, I used the Khan Academy Into to JS: Drawing & Animation  course and its sequel, the Advanced JS: Games and Visualizations course. Over a 9-week term, I set aside one day a week (usually Fridays) and the entire 9th week to work on Khan Academy. The project I was grading them on was open-ended and relatively simple: Devise a simple game in Javascript using Khan Academy’s software. At the end of the term, the students had to present their game in front of the class, explain what it does, and “sell it” to the students to play. The students then had a couple of days to try out each other’s game, and the winner received a goodie bag of candy and a congratulatory certificate. In this case, the grade was based on the 8 Standards of Mathematical Practice, rather than the content standards for 8th grade.

In my 11th/12th grade Precalculus class, I instead used the more-involved’s Computer Science Discoveries course (the link might require you to log in to the site first to view it, but it’s worth your time!). This ambitious project was a year-long endeavor, occupying every other Friday throughout the year, as well as the last week of each term and the last 3 weeks of the school year (for a total of ~8 weeks). It took a lot of work to work it into the busy Precal schedule with so many content standards to teach, but I was determined to make it happen. This course has 6 modules that teach them the basics of programming and give many applications, from website design, app-making, creating games/animations, and analyzing big data via programmed algorithms. This time the students were grouped into groups of 4 (and sometimes paired off into subgroups of 2 and 2, depending on the assignment) and had a year-long goal of creating a website to showcase their creations; I loved the “meta” idea that the website to showcase their project was itself part of the project. They were graded at specified intervals throughout the year with progress reports required from each team and mini-presentations at the end of each term. I wanted to get a local chamber of commerce member to come for their final presentation, but that didn’t work out.

Overall, however, the response from students was overwhelmingly positive. To begin with, many whined and complained about not wanting to code and having career dreams not even remotely related to math or computer science, but as the project wore on, almost all of those views changed, and it became an exciting endeavor. Frustrations were common (productive struggle for the win!), but myself and classmates nudging frustrated students along created a true aura of teamwork and perseverance. I can honestly say, of all of the projects I have attempted for students, these two were the most intensive and rewarding. (In some sense, they weren’t “projects” so much as portfolios of student products, so in my previous article on projects, I didn’t include these. Plus, I wanted to save these for a post of their own.)

I definitely know that setting aside time to teach coding (which, alone, can be a course all by itself and often is!) can be daunting or impractical depending on the class (I’ve only done it twice out of all the classes I’ve ever had). Yet, if it can be effectively implemented, coding with students:

  1. Teaches intense critical thinking and problem-solving.
  2. Gives huge experience in productive struggle and perseverance
  3. Offers deep practice of mathematics, such as coordinates, logic, matrices, vectors, and models.
  4. Promotes collaboration and teamwork for troubleshooting and discussing ideas and implementations.
  5. Creates a final end-product that makes its usefulness self-evident.
  6. Gives the students a valuable life-long skill and launchpad to possible new career choices.

With all of these benefits, perhaps all curricula around the country should implement some form of programming into math classes. In today’s world, math applications are increasingly intertwined with computing, so this idea is bound to become more important.

Leave a Reply

Your email address will not be published.