By Nathan Carter
I’ll just say it right out. You should learn to
program.
Like, really learn it. At least a computer science
minor, maybe more.
You’ve probably heard “coding is the new literacy” a thousand times. I’m not going to say that. My
reason is different.
Are you expecting to hear about marketability and
median starting salary for graduates who combine
math and computer science? Sure, data science is
hot, and you can make good money (http://bit.ly/RiseOfDataSci). But that argument is convincing
only if making money is your goal. “I like topology!”
you say. “Keep your stupid money!” Don’t worry—I’m
not going to talk about your marketability.
So what is my reason? Is it those mathematicians
who leverage computers in their research? The Borwein
brothers are well known for their contributions to
number theory from a computational approach.
William Stein is at least as well known for creating the
mathematical software package Sage as for his number
theoretic uses of it. The four-color theorem was proven
by a computer . . . sort of.
You’re getting warmer. After all, the first research
team I joined after graduate school had me writing R
code to analyze graphs. But no, that wasn’t my argument either; not every area of mathematical research
needs computers.
Nor was I planning to use a close cousin of that
argument, for educators. Programming gives math
teachers the ability to create great interactive experiences like those on GeoGebra.org, the Wolfram
Demonstrations Project, and ShinyApps.io. Great
resources, but they’re not my reason why you should
learn to program.
Give up yet? Okay, I’ll tell you.
You should learn to program because mathematics
and computer science have an amazing synergy that
will open up your brain.
No, not like head trauma. Like enlightenment.
Both mathematical language and programming languages are ways of making ideas precise. They reinforce one another, like weight training and sports. To
learn to program well (not just quick and dirty coding
but real programming) requires pervasive organization
in your thinking. That organization transfers to how you think and communicate about everything, especially precise things like mathematics.
Heck, programming requires even more organization
and precision than mathematics does! I’ll back that up
with a quote from Deb Roy, a roboticist at MIT, who
said, “To understand how something works, you need
to build it.” I can’t tell you how many times I’ve found
that to be true.
I didn’t understand the change of basis matrices in
an abstract algebra course until
I needed them in a C++
library I was writing for
computer graphics. My
computer has been
more exacting on
my handling of edge
cases than any journal referee. Just this
morning I learned that
I didn’t fully understand
a graph algorithm when
I tried to implement it in a
new context. In each case, my understanding had to improve because I wasn’t just doing
math, but building it. There’s a stereotype that the
hardcore geeks skip computer science to get to math.
Don’t believe stereotypes.
I promised not to call coding the new literacy. It’s a
common phrase, but I prefer the idea that modeling is
actually the new literacy (http://bit.ly/NewLit).
Don’t run away, pure mathematicians! Yes, modeling
happens in stats and applied math. But any time we
turn ideas into a precise formulation we can explore,
we’re modeling. Taking an idea you have in set theory,
formulating it as a new axiom, and exploring its consequences with theorems is modeling too.
Mathematicians and computer scientists both model
for a living. (Ha.) Learning to program will expand
the ways in which your brain does modeling. That will
make you better at it, in code and in math. That’s my
real argument. You get a more awesome brain.
It’s probably not too late to change your schedule for
next semester.
Nathan Carter programs and does math. He teaches at
Bentley University and has written two books for the
MAA, Visual Group Theory (2009) and Introduction
to the Mathematics of Computer Graphics (2016).
No comments:
Post a Comment