# What should mathematics majors know about computing, and when should they know it?

This is a throwback post, first published in March 2014 (and referring to yet another post all the way back in 2007). As I teach my Linear Algebra and Differential Equations class this semester, which uses more computing than ever, I'm thinking even more about these topics. Enjoy, and check the post-credit scene at the end where I add some updated thoughts for 2023.

Yesterday I got an email from a reader who had read this post called What should math majors know about computing? from 2007. In the original article, I gave a list of what computing skills mathematics majors should learn and when they should learn them. The person emailing me was wondering if I had any updates on that list or any new ideas, seven years on from writing the article.

If anything, over the past seven years, my feelings about the centrality of computing in the mathematics major have gotten even more entrenched. Mostly this is because of two things.

First, I know more computer science and computer programming now than I did in 2007. Iâ€™ve learned Python over the last three years along with some of its related systems like NumPy and SciPy, and Iâ€™ve successfully used Python as a tool in my research. Iâ€™ve taken a MOOC on algorithms and read, in whole or in part, books and articles that contain significant discussions of computer science-y things like time complexity and NP-completeness. As my own understanding of CS has expanded, Iâ€™ve been better able to see how computing is important to mathematics and how fluency with computing can help a person learn mathematics.

Second, Iâ€™ve been using computers and software more and more in my teaching. Back in 2007, I was just using Geometers Sketchpad and Derive (anybody remember Derive?), and then somewhat sparingly. These days the computer plays a front-and-center role in all of my classes. My students are using Geogebra, Wolfram|Alpha, and Excel every week in Calculus; LaTeX in my proof-oriented classes; Mathematica in my linear algebra and Calculus 3 classes; and so on. The more I use the computer in my classes, the more upside I see for student learning, and so I use it even more.

So I would argue now, even more fervently than I did in 2007, that computing is an essential facet of any legitimate Mathematics degree program, including those for pre-service teachers, and that Mathematics majors need to demonstrate skill at computing early and often. By â€śskill at computingâ€ť I mean a collection of skills often referred to as â€ścodingâ€ť. By â€ścodingâ€ť I mainly mean making a computer do what you want, rather than you doing what the computer wants. Math majors need the former kind of computing fluency. The latter kind of fluency is that of a skilled end user of an application, which is useful too but not necessarily helpful in solving the kinds of problems that mathematicians solve. As a mathematician you have to bend the computer to your will.

Why even have computing and coding part of the math major in the first place? My convictions are:

• Computing and coding are skills that are complementary to non-technological mathematical reasoning such as proving theorems. In fact proving theorems and writing computer programs are remarkably similar processes and can be mutually supportive for learners when they do both.
• The computer is a tool for studying mathematical ideas in the same sense that a microscope is for studying biology and a telescope is for studying astronomy. Can anyone seriously imagine banning microscope technology from the biology major, on the argument that biology is a more pure discipline without the technology? Instead, bring it in and teach students how to use it well.
• Computing is a valuable skill in the workplace in its own right, and full of other skills that are transferable and in harmony with the traditional learning goals of the math major. Try debugging a program sometime without engaging in critical thinking and rigorous problem solving.
• Computing is fun, and fun is good.

I will admit that I have no research to back up those claims, which is why I label them â€śconvictionsâ€ť. However, Iâ€™d point to the MAA CRAFTY report for some support. In that report, various client disciplines were asked about what theyâ€™d like to see more of, and less of, from their own majorsâ€™ first two years of mathematical studies. This is mostly calculus, linear algebra, and differential equations. Shockingly, not a single discipline said, â€śWe need more trig substitution integralsâ€ť or â€śLetâ€™s have more crazy-exotic limits being taken by hand in Calculus 1â€ť. If anything, the client disciplines wanted less content and more depth. And they wanted more technology â€“ both explicitly (like engineering which specifically calls for more spreadsheet use) and implicitly (like those disciplines that want students to have more skill with checking their own work).

In terms of what I think math majors should know, I donâ€™t have much to change from my list in the original 2007 article, actually. I would substitute â€śmathematical softwareâ€ť for â€ścomputer algebra systemâ€ť in year 1 â€“ starting students off with Geogebra, Wolfram|Alpha, and Excel rather than Maple or Mathematica seems smarter, since the former set of tools is free (or ubiquitous) and simpler to learn. I would emphasize the use of free and open-source tools whenever it makes sense (Sage, rather than Mathematica or Maple; Python + NumPy + SciPy rather than MATLAB; etc.) And Iâ€™d keep it developmental â€“ learn simple tools in year 1 and build complexity as students gain mathematical maturity. And I think I would save requiring learning how to program until year 2 just because programming pairs so well with learning how to prove theorems.