There are deep connections between algorithmic and mathematical thinking. Both construct "systems" --- computing systems in the algorithmic case, intellectual ones in mathematics --- from simple primitives. As Knuth notes in the preface to The Art of Computer Programming, "The construction of a computer program from a set of basic instructions is very similar to the construction of a mathematical proof from a set of axioms" [1]. Other connections include similar ways of organizing primitives into larger structures ( e.g., recursion in algorithms, recursion and induction in math; conditionals in algorithms, definition in cases and proof by cases in math), similar ways of using abstraction to manage complexity, and an underlying reliance on logic. In short, mathematics is not merely a tool for limited areas of computer science, it is a mindset that fundamentally improves one's ability to devise and implement algorithms. Computer science students therefore need to exercise their mathematical as well as their computational abilities, and computer science educators need to help students use both ways of thinking to solve computing problems.This panel illustrates specific ways in which mathematical reasoning enhances algorithmic problem solving, and provides educators with concrete examples and resources to use in their own teaching. Each panelist will present an exercise, classroom example, or similar item, from their own experience, and will demonstrate ways in which mathematical reasoning helps one solve and/or understand it. The audience will be invited to contribute their own examples and to comment further on the role of mathematical thinking in computer science problem solving.The panelists' and audience members' examples will be collected on a Web page for continuing reference. A prototype of this page is at http://www.cs.geneseo.edu/~baldwin/math-thinking/examples.html.
Read full abstract