Education ∪ Math ∪ Technology

Day: April 23, 2012 (page 1 of 1)

Automaticity in programming and math

I’ve been learning how to program for a long time, a task that has much in common with mathematics. Both programming and mathematics involve being able to solve problems. Some of the problems in programming and mathematics have well established solutions and other problems do not. On a micro-level, programming involves manipulating code, a task much like the symbolic manipulation often used in mathematics. On a macro-level, programmers and mathematicians both need to be able to trouble-shoot, organize, and communicate their solutions.

Sample code:

Sample code

When I learned how to program, I taught myself, and I know that as a result, the code I create does not always follow the most appropriate industry standards. I have some unconventional solutions to some of the standard problems in programming, and I have less than optimal solutions for some basic problems in programming. I’ve yet to develop my own library of solutions, a standard practice in the industry.

On the other hand, I’m not a professional programmer. I program to solve problems I run into in life, and I program for fun. I have many programming projects that I’ve started and not completed. I’m an amateur programmer. I don’t need my work to look exactly what professional programmers’ work looks like because I rarely, if ever, share my programming with other people. I often share the results of my programming though, and this has helped build some useful tools for my students.

There are many low-level tasks that I no longer need to reference. I don’t need to look up how to define variables or functions, and I don’t need to look up loops, conditionals, and other basic parts of the structure of the programming languages that I know. I still need to look up the methods and properties of some higher level objects in the programming languages I know though, and when I program in PHP, I have a reference manual for the hundreds of functions available in PHP always open. I could be said to have developed a certain amount of automaticity in learning how to program, especially for the more basic tasks.

This automaticity was not learned by memorizing programming structures. I didn’t develop automaticity by doing practice exercises. I didn’t develop automaticity by reading books on programming. I developed automaticity in the low-level programming tasks by programming, by giving myself projects to work on that required me to build my skill, and by repeatedly looking up reference material when I got stuck. I developed automaticity because it is frustrating to write code that doesn’t work. It’s frustrating to get error messages that are nearly incomprehensible back from the computer when you make a mistake in the structure of your code.

If we look at mathematics education, we see that many, many of the problems given to students which have standard solutions. We expect students to develop fluency in these problems, often before they ever get to see any of the non-standard problems. In fact, in k to 12 education, students can potentially never be given an open-ended non-standard problem. Unfortunately, I believe this approach has failed our students in the past, and I’m not alone.

I’d like to see a system without a focus on fluency and automaticity in mathematics. These are the wrong drivers of mathematics education. Instead of focusing on the lowest level tasks mathematicians do, and assuming that fluency in these tasks leads to mathematical reasoning, we should focus on the most interesting and challenging tasks, and expect that a certain degree of fluency and automaticity will be developed as a result of these tasks. Instead of expecting students to memorize recipes and algorithms, we should allow them to develop toolkits and libraries to use of their own that they can reference as needed. Instead of feeling that every problem students need to do has to be solved quickly or efficiently, we should allow for alternate solutions and methods to be used.

The next big thing

Stephen Downes shared this article about the next big thing in network analysis. He writes:

Valdis Krebs argues that the next big thing in network analysis will focus on the contents of what we read (and not just the titles as entities) in order to draw connections between people. It’s a natural evolution of network analysis. "It is not just the also-bought data that matters (which books bought by same customer), it is what we specifically find interesting and useful in those books that reveals deep similarities between people — the hi-lites, bookmarks and the notes will be the connectors. Our choices reveal who we are, and who we are like!"

I’m going to argue that what would be even more valuable than a better way to determine who is most similar to us would be what important ideas do we not know, and perhaps we should. We have this crazy amount of data on what people read, what videos they watch, and who they chat with, which should in theory be able to help determine what "important" things they have not yet read, and even some of what they do not know. We should be able to use network analysis to direct learners into new learning experiences.

This is similar to the Netflix (and Amazon, etc…) recommendation engines, which suggest similar titles to what one has experienced already. Unfortunately this approach leads us isolated in a bubble. Instead, what if these recommendation engines looked at what was in our circles, and found something important to know that is perhaps an opposing point of view, or a different perspective on what we know. I’d happily sign up for a service that culled the best of the opposing ideas to my own perspectives and shared those new perspectives with me.

Instead of finding better ways of leading people to re-inforce existing knowledge, can we find better ways to direct them at new ideas?


Fixing audio from a video track

The problem:

Our students had recorded video of themselves, but the audio from the video was too quiet to hear. Unfortunately, they had recorded their video on a Flip camera from a distance of 7 or 8 metres in a large open space, and forgot (or did not know) that this would result in extremely poor audio.


A solution:

We don’t have the kind of video editing software readily available for students that would fix this kind of problem (I think our film course has access to Final Cut Pro), so I wanted to find a free solution for fixing this audio.

I found WinFF, which is an open source video conversion tool, which happily converts from a video to audio, essentially isolating the audio from a video file. I downloaded it, and installed it to my computer. After some experimentation, which I did with the students, I discovered that the following settings worked best for this process.



I then imported this audio into Audacity, and used the volume adjustment option (see below) to increase the volume of the audio track of the video.



Once the audio volume was adjusted, I then imported the video and the new audio track into Windows Live Movie Maker, where we muted the original video, and used the new enhanced audio track. Queue the excited students who no longer have to re-record their video!


The follow-up problem:

This is essentially a magic tech recipe that the students may be able to reproduce, but I doubt they will be much better at trouble-shooting their own tech problems in the future. As I outlined the solution for the small group of students I was working with, some of them were interested, others were not. They displayed many of the signs I see when I see math taught the wrong way. They have no idea what the OGG audio format is, or why it would be the best choice to work with Audacity.



  1. How can we make learning technology more seamless? I see technology as a tool for other activities, but some of our current technologies are so difficult to work with that something which should be simple (increasing volume of a video) is difficult.
  2. Is is better not to help these students in the long run when the task they want to do is beyond their current technology skills? Is there a reasonable balance we should strike between assisting students finishing the project today, and helping students become more independent tomorrow?
  3. How is this related to mathematics education today? How often do we help students solve fabulous open-ended problems with magical mathematics techniques they don’t really understand?

Mathematics education blogs

Here is a list of people who blog about mathematics or mathematics education. Please let me know if you blog about mathematics education, and you’d like your blog to appear in this list. I’d like this list to be exhaustive, rather than exclude people. You can either contact me, or add your relevant information to this form.

So far this list has 347 (!!) blogs. Now that Google Reader is going to be taken offline, I’ve moved the list to a spreadsheet instead of a Google Reader bundle. You can access it by clicking below.

Find the list of blogs here