Analyzing Algorithms


Mathematicians communicate their thinking algorithmically; that is, they devote time to developing sound, precise ways to methodically illustrate the manner in which they arrive at a solution. Nearly every day we use a practice with the kids in which we analyze a fellow mathematician's algorithm.

The algorithms we inspect come from the work of another student, either in the same class/session or a student that we've worked with as we travel around the country for professional development sessions. We often review the work of kids (i.e. "fellow mathematicians") who are much older than us, and we review complex expressions that have multiple terms. We even review algorithms that contain "bugs," as finding errors improves our own logical reasoning and also reminds us that errors are learning opportunities.

In regards to the development of young mathematicians, this practice of Analyzing Algorithms is extremely important for a number of reasons. First, we are ultimately moving students towards being able to write proofs, and thus these step-by-step algorithms are effectively early proofs when we add an oral justification to each step. And the kids need multiple experiences "reading" a proof or algorithm in order to understand the way it should flow and how it should look. Additionally, this practice helps us develop our logical thinking skills. Working to follow someone else's logic is a difficult but important method by which students grow their own thinking skills and become more meta-cognitively aware. And lastly, this practice refines our understanding of mathematical concepts and the principles and properties of mathematics. Every experience deepens and solidifies our knowledge of the ideas we are working to fully understand.

One final but important point: This practice of Analyzing Algorithms crosses over with the work that computer scientists do when coding. You'll notice we even carry over the use of the word "bugs," both to create the connection between the two disciplines and because this allows us to think of errors as something that we can find, learn from, and fix. Ultimately, much of our work in mathematics crosses over with the discipline of computer science and we will continue to focus on developing the skills of our students in regards to thinking computationally.