# How important is programming for mathematicians?

I’m a freshman student in mathematics, and I’m considering whether or not to take a programming course. How important is programming for mathematicians? Do working mathematicians use programs to aid their research?

The answer is definitely yes, and there are many reasons. The three most important are:

• The bigger your “toolset” is, the more you can do.
• You do not know what you will be doing in the future.
• Computers are right now are omnipresent, and efficient computer use = you know how to program and automate things.

To be more specific, I will just name a few concrete cases:

1. It is much easier to verify multiple cases using computer, e.g. the only known proof of the four color theorem is computer-assisted.
2. Computer can solve (symbolically) many tedious things fast, things that would take you weeks or even months to calculate by hand, e.g. integration, many types of ODEs or PDEs, minimization problems, linear programming and extrema finding, even formula simplification.
3. Every mathematical software (Maple, Matlab, Mathematica, but also Sage, Octave, and so on) are based on a programming language that you use to tell the program what you want to do.
4. Many mathematical problems are too hard to solve symbolically, but often you can find numerical solutions with arbitrary precision.
5. A number of math-related topics (or other domains that extensively use math nowadays, like computational biology, meteorology, financial analysis, quantum physics, …) requires computers to work with.
6. Using computer you can visualize your results to gain intuition, or to present it to a wider audience, etc. Trust me, it really does help, knowledge of a programming language will help you here a lot, e.g. with generating and transforming data. Even on math.SE people use $\LaTeX$, which is a computer programming language, imagine all those posts typesetted using trivial monospace font!
7. Automation! This is what computers are really good at, so if you need to preform some well defined tasks on large sets of data, just make computer do your work. However, usually in a research there are no tools that would do exactly what you want, just some building blocks of some sort, so you need to know how to use them and build even more awesome things.
8. Also, you have no idea where life will throw you, it is good to know that skilled programmers (and big part of this skill is keen mind and approach to problem solving) earn a lot of money 😉
9. Programming can be rewarding on its own, especially if you use nice tools. For a mathematician, I would recommend you a functional programming language, e.g. Haskell.
10. Finally, theoretical computer science is a part of mathematics (theoretical computer science $\neq$ informatics, I am talking about ideas and algorithms, not HTML tags and FreeBSD admin knowledge). As the field is very large, people tend to differentiate, but there are still areas where there is no boundary between.