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:
- It is much easier to verify multiple cases using computer, e.g. the only known proof of the four color theorem is computer-assisted.
- 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.
- 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.
- Many mathematical problems are too hard to solve symbolically, but often you can find numerical solutions with arbitrary precision.
- 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.
- 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!
- 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.
- 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 ;-)
- 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.
- 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.
I am not a mathematician. But I love some mathematical topics. I believe that automation can't be ignored as a tool in today's mathematics of all levels. You need to be at least familiar with the concepts of programming. You can grow your skills over time to cover your core interests. For example, you should know about variables, loops, etc. but not worry about web design using HTML and CSS. If you learn a bit each year, in few years you will gain a very good skill that will allow you to prove and check your work and possibly enjoy mathematics more. Also, in today's world, learning programming is not difficult. If you can understand Mathematics, general programming principles will be a piece of cake!
I use programming all the time in my daily research and I think many other also do so. On the one hand, the development of algorithms is indeed a part of applied mathematics itself. Moreover, it can be really helpful to check identities or even to form conjectures by programming.
I have a Ph.D. in mathematics and I did two postdocs and worked as an assistant professor for five years in which I spent much of my time on research. I currently work as a software developer.
It depends completely on the type of math you are interested in. If you are interested in pure mathematics as opposed to applied mathematics the answer is generally that a programming language is worth much less than another semester of math under your belt. Proofs are the only gold standard in that area and computers rarely furnish them. Read the abstracts of papers for the top math (pure) journals in just about any given month and you can verify this for yourself.
The applied mathematicians I knew seemed to make more use of a computer, but it still depended wildly on the specific area of applied math they were interested in. Some areas of applied math seem to have researchers who really primarily do proofs and hence probably made little use of software themselves. Others were very interested in computer simulations of specific examples.
On the other hand it is by no means uncommon for people who major in mathematics to eventually find themselves doing professional software development. Given the number of math doctorates compared to the number of CS students, I am surprised often I have run into another math doctorate lurking among the software engineers. It's not bad to have programming as a fail-safe in case you don't end up in a job that is actually doing mathematics for a living. Though honestly a single course is unlikely to land you a software job.
I think programming is useful in some branches of mathematics to have some concrete examples, which may lead to a conjecture or even a proof.
One example is using programming to find out some integer sequences related to a problem, then checking it out using The On-Line Encyclopedia of Integer Sequences™ (OEIS™) (www.oeis.org)
From there, one can get a clue of what is the underlying formula behind the integer sequences and from there work out a proof.
If I am not mistaken, the Birch and Swinnerton-Dyer conjecture arose from using programming to generate some data. Also, the (in)famous Four-Coloring Problem in graph theory was proved using some computer checking.
So yes, I believe programming is useful for mathematicians. Some purists do not believe in using computers (Andrew Wiles was quoted to say "I never use a computer."), but I believe this is changing soon in this new generation.
I'm currently a senior in college, majoring in mathematics, so I'll give you my (hopefully useful) perspective on the problem, and I'll try to not repeat anything people have already said.
I went into college pure-math. That's all I studied, I was going to do grad school after I graduated, and then I was going to go into academia. That was the plan. Up until the fall of my junior year, I mostly stuck to this plan (apart from some silly distributional requirements). But then I got burned out. Did a little too much math in the fall of my junior year, and decided it really wasn't for me. So I took a chance and took some computer science courses.
I can't speak to whether or not it will be useful for math research, although my intuition tells me that it most likely wouldn't hurt. I found the theoretical computer science courses (graphs and networks, design and analysis of algorithms) to be very interesting and fun, and it wasn't until after I took some CS that I really understood how poorly I understood computers.
I can't say that taking computer science has deepened my ability to do mathematics, but it's certainly exposed me to a new branch of math (theoretical CS), given me many useful tools for doing math (especially stat), and even if you don't think it will be the most useful professional skill (which, for most jobs, it should be), it's still a great life skill to have. I won't guarantee that it will be useful for your math research, but I will say that I can't imagine how the knowledge won't benefit you in a substantial way in your future. Best of luck!