Image credit: Rob Cottingham
I’ve been doing some programming recently for a friend of mine, and while programming I made a realization. Every time I needed to remember how to do a particular algorithm, or use a tool with which I’m less familiar, I look it up online (or I ask someone for help). In fact, I spend a lot of time as a programmer looking up things called APIs and core functions in the programming language I’m using. The basic structure is very solid at this stage, since I’ve been using it over and over again, but there are still lots of things I look up frequently.
I wondered to myself, what would this look like in the mathematics classroom?
It’s not ridiculous to compare programming and mathematics. Programming and mathematics have a tonne in common, in fact much of programming a computer itself is deeply rooted in mathematics. They are both domains of knowledge which allow for high levels of creativity (provided you are given the freedom to be creative) and rely on an ability to construct algorithms and perform computations. Being good at constructing algorithms is useful, but not sufficient, in both domains for creating complexity and solving difficult problems. It takes more than just knowing your stuff to be good at these two areas of knowledge.
What I imagine would happen, were one to follow this model, is that students would have a resource available to them, whenever they needed it, which had very simple and short explanations of each mathematical computation in their toolkit. Whenever they ran into a computation, and forgot how to do it, they could look it up. Perhaps this toolkit (or mathematical API reference) would be in paper form, perhaps it could be in digital form. Whatever it is, it should be easy to search through. In digital form, it should include short (2 minutes ideally) video snippets showing how to do the computations. Perhaps it could even be searchable by entering an example of the computation itself. Students could add to their personal toolkit as they discovered or encountered mathematical techniques that they found useful, which is very similar to the process programmers go through as they build a code library.
Over time as the students used the reference material, the computations that students used often would be things they would naturally memorize. The less frequent computations might be things they looked up a lot. Students could spend more time working on highly engaging and personalized problems or activities, and a bit less time memorizing all of the computations. Most importantly, they would spend a lot more time practicing an important skill, recognizing what type of computation is useful in a given situation, and being able to relearn that computation as needed.
In Keith Devlin’s book, "The Math Instinct" he makes a lot of interesting points about mathematical ability. One thing he points out is that many people use mathematical strategies successfully in life, for example to do their shopping, but almost no one uses the highly efficient "school math" algorithms they learned. The problem is one of transfer of knowledge. People just generally don’t know how to transfer stuff they’ve learned in school to their lives.
The hope is that these types of API references for mathematics would be something so useful, kids would keep them year after year, and potentially use them in their lives. We already give students formula sheets for many exams, this is just one step further.
Note here that I have a premise which I should make explicit. It is not the learning of algorithms or specific computations which is mathematics, it is the learning of how to use these algorithms and apply them to problems in creative ways, and then extend them as necessary which in my mind is what defines mathematics.
Whit Ford says:
Mathematics is all too often perceived as being only about algorithms and computations.
I would argue that mathematics primarily about *why* an algorithm works, or *why* it is the most efficient, etc. In order to know how to apply algorithms properly and extend them appropriately, students have to also be reasonably comfortable with the context from which they arose. This is often a more abstract thing to grasp than the algorithm itself.
Memorizing the functions or methods available in an API is not of much use unless you also understand what purpose the entire object or module or library serves, and what you seek to achieve by using it. Too many math students focus on the algorithms successfully while glossing over the concepts behind them. Those who do this may pass the test at the end of the chapter, but will often struggle with the exam at the end of the course or the material the following year.
July 14, 2011 — 1:55 pm
David Wees says:
This is a very good point Whit. I’d like to find a way to spend more time talking about the whys and wheres of the algorithms, although I certainly didn’t make this explicit in this piece. Agree completely that memorization isn’t useful, as you describe above. Good insight.
I’ve just shared this idea really, I’m not completely convinced it is useful yet, and certainly I will need to incorporate your feedback into improving it and if I can’t make it work within the suggestions you’ve provided, I’ll discard this idea and look another one.
July 14, 2011 — 7:18 pm
Whit Ford says:
I was not disagreeing with your musings, only seeking to expand on them.
I am smitten by the idea that if we were to constantly ask students to defend opinions of theirs using quantitative reasoning, they will not only learn the mathematics, but also acquire more significant insights along the way. If, instead of asking them to perform a computation or draw a graph, we ask them to form their own opinion on a topic based on data, then defend that opinion… and perhaps try to use the same data to defend an opposing opinion, then they will not only learn how to make a persuasive argument, but they will also have learned ways to poke holes in the arguments of others – in short, they will be much more independent thinkers, be less prone to accepting statements as true just because some numbers were included, and be more skilled at verifying that sound thinking went into the use of numbers.
This is similar to your point about how important it is to learn to use known resources or algorithms in creative ways – and was part of the idea behind my blog posting: http://mathmaine.wordpress.com/2011/07/14/integrating-mathematics/
July 14, 2011 — 8:11 pm
David Wees says:
I really like the idea of requiring some justification and explanation of why students have chosen a particular algorithm. In programming, this is usually done in the code comments, and programmers who include clear, easy to understand, comments in their code are thanked by the grateful community of programmers which then has to use their code.
November 15, 2012 — 12:40 am
Ian Chia says:
I think there’s an important distinction between knowing an algorithm/using it in the “normal” context versus the skills to know how to approach a problem from many angles.
My personal experience is that it’s the difference between teaching kids to hack versus them “proper” programming – this is from my belief as someone who grew up as a teenage hacker on Apple ][+ and C64s. In those days, we didn’t have computer science course for G9+ kids.
If you put aside the negative preconceptions of a hacker as somehow who breaks into computer systems for a moment – a hacker is someone who takes things apart, wants to know why they work, puts them back together with their own personal tweaks etc. So they learn about the principles, but also how to circumvent them using their imagination. They invent new solutions, or synthesise various approaches to see which ones work and which ones don’t. Solving the problem becomes a game. And it’s fun and deeply satisfying.
If you want to approach teaching programming, my firm belief is that it should be fun, and that it should be challenging, that there would be concrete rewards, and that it should involve a lot of creativity and imagination. My gut feeling is that that approach would work well for teaching mathematics as well, since math & computer programming are conjoined twins.
– Ian
August 25, 2011 — 9:25 pm
Ian Chia says:
Just wanted to share this brilliant slide that was part of a presentation at the DIY Citizenship conference hosted at the University of Toronto last November http://diycitizenship.com/
This was from Yukari Seko who is part of the Experiential Design and Gaming Environments Lab (@edgelab) at Ryerson University.
“All grown-ups were once Hackers – although few of them remember it…”
http://www.flickr.com/photos/ddr/5181930780/
Full presentation here:
“The young child as hacker: Exploring the foundations of DIY culture in the early years”
http://www.slideshare.net/YukariSeko/yukari-diy-nov14
We could do so much more by privileging the approach of early childhood education throughout the later years, where play/learning/making mistakes are all part of a safe and fun experience.
– Ian
August 25, 2011 — 9:35 pm