Thursday, April 23, 2015

#codemaths:Programming math practice for students

//Checking in

I feel like I need to start the first paragraph of every post with a quick paragraph for those who will judge my whole classroom based on one blog post (not that anyone has every voiced judgement but I don't want to give the wrong impression either). As part of any good math classroom I believe there needs to be a balance of conceptual development, investigation and then, in turn, developing mathematical fluency and efficiency. This post will focus on how I am using computers to develop efficient math students, and will not focus on the conceptual development that has taken place prior to students doing this practice work (think textbook problems).

//Learning Cycle, Conversations and Self-Reflection

I have chromebooks in my classroom, two students to each device, which I actually love in promoting math conversations and collaboration. If offered one device for every student I'm not even sure that I'd want it as an option...seriously. I've spent many (seriously, MANY) more hours than I care to admit developing an electronic form of practice for my classroom that works for my situation and I feel like I'm at a new place personally, thus this blog post.
A few years back I was doing the traditional assign homework, quiz the students and look at the data myself. Big Data in education, we all know the drill. I had all kinds of charts and electronic analyzing going on but I was doing all the analysis, not the kids, and it was after the learning cycle was to have been completed. There are actually quite a few blog posts and processes I've written on electronic student data that I'm actually not even doing now in my own classroom now.
I dabbled in writing rubrics for each learning target for my students which I really actually liked but, for the sake of time and curriculum development, that has been pushed to the back-burner and saved for a year when my course content has fewer changes. In class we don't have "homework" but "practice" and as it is electronic there is an unlimited amount available to students at any time, along with help videos that are an option for kids wanting to review where we've been.
We have dedicated class time for practice (example here) and it keeps individual learners at the focus rather than the pace of the whole class. I actually think it's tragic to hear that many 12, 13 and 14 year old kids are having to do 3-5 hours of homework every night before bed rather than spending time with their family and I don't want to be a contributor to that any longer.
I've done the whole clicker thing and what I didn't like with that was there was a lot of down-time and waiting and a lot more focus on the right answer than the process and conversations. Maybe that's because we were gathering data and in education we want it to be "valid" and "formative". No thanks, I'd rather have my kids talking about the math they are wrestling with than getting pure data from them.
Properties of Exponents Review


I've written some about this in the past and wanted to highlight some of the changes I've put together. I'm presenting on this at the NCTM Regional Conference in Minneapolis, Fall of 2015 from both a teacher perspective as well as using it as a tool to challenge students to think more deeply about the math concepts they are learning while applying them in a pseudo-code environment. I tried going full-blown javascript with a class a few years ago and realized so much time is lost in so many of the small details of just writing code that we would never ramp up soon enough to get to applying the math we were currently learning. Today for example in class I found a couple of side-tracked girls that had clicked on the code link from a practice set they were working on and I think I have them hooked on a code challenge to write a system of equations and an algebraic solution based on three randomly generated variables.


Kind of a sneaky teacher thing but I have it programmed to go through a subtle gradient of background color (starting at white). If a student continues to get consecutive questions correct their screen will move through shades of green toward blue. As they get consecutive questions wrong it will move through through yellow shades toward red. For a student looking directly at the screen they may not even notice it but as I'm walking around the room it is easier to see and it helps as a visual cue even from across the room for me to go check in with a pair of students if they aren't already calling for help.


Far from gamification but after a set number of correct questions, based on quantity and percent correct they can get 1, 2 or 3 stars to show up. It doesn't save to their profile, record it anywhere or even go in as a grade book but it's laughable at how that actually motivates some kids to try harder and not rush through their thinking. Occasionally I'll hack my own code and pictures of my face will show up as they get more questions right. I thought it was funny--some thought it was creepy but deep down I think that means it's awesome so I keep doing it.

//Auto Math Formatting

This has been the latest project with many times where I almost gave up and it turned out I had literally one character in the wrong "else if" loop. I didn't want students to get hung up on understanding what 2x^3 represented mathematically so after the code is printed it will go through and format text (like in in the image above) as 2x³ while also formatting fractions and subscript labels, all based on order of operations so 1/2x will be 
shown differently than 1/(2x) for example. As students type their responses in a text box they will also see a math 
formatted preview of what they are entering.


I've tried hard to make this all in a way that can be shared and duplicated but I recognize at this level you really need to have some level of javascript understanding to make something like this work for you. What I've found to be true for me though is that it has become easier for me to make specifically what I need for a lesson rather than trying to find something that is close to what I need. Here's a link to a getting started guide I've put together and I'd appreciate any feedback if there are steps or parts of the process that are confusing. I can't believe you've read this far, you must be pretty nerdy too.


  1. Neat! This is definitely going onto my "to investigate over summer" list -- I especially what you did with the background changing colors as a quick check.

    Related to your most recent project, have you looked into MathQuill? It's what Desmos uses to transform text into math, and I've been very happy with it.

    It sounds like you've got a good system going, but if you have a "to explore over summer" list too, I recommend you look into Numbas ( Very similar to your #codemaths, you can set up variables and use various functions to manipulate them, packaged together with a mix of html and javascript to grade, offer feedback, and allow new random questions to be generated.

  2. Thanks Andrew! I looked into Mathquill and Mathtype last year and couldn't figure out how to get them to work with Google Apps scripts. If at some point I convert over to the HTML service app that may help.