Computer Programs for Pure Mathematicians

Question: Which computer programs are useful for a pure mathematician to familiarize themselves with?

Less Briefly: I was once told that, now-a-days, any new mathematician worth his beans knows how to TeX up work; when I began my graduate work one of the fourth year students told me he couldn't TeX, I was horrified! Similarly, a number of my peers were horrified when I told them I'd never used Matlab or Mathematica before. Currently, I can "get by" in all three of these programs, but it made me think: what programs are popular with pure mathematicians? I don't mean to limit this to computing things: programs which help to draw pictures and things can also be included.

Lest I Start A Flame War: This is not meant to be a "what is your favorite computer language" question or a poll on who thinks Mathematica is worse than Sage. This is meant to be a survey on what programs and resources are currently being used by pure mathematicians and may be good to look at and read up on.

I'm also unsure of how to tag this.

-
I don't think computer-science is an appropriate tag. – Aryabhata Dec 12 '10 at 8:02
There are also several relevant discussions on MathOverflow. mathoverflow.net/questions/19046/… mathoverflow.net/questions/11084/… and mathoverflow.net/questions/30805/… You may also want to browse the [computer-algebra] tag list mathoverflow.net/questions/tagged/computer-algebra there. – Willie Wong Dec 12 '10 at 13:58
If I may be allowed to indulge in a tiny sidebar: it's usually a good idea to make yourself "language-agnostic"; that is to say, be familiar with the constructs common to most computing environment languages used nowadays, that even though you prefer writing/computing in language X, you can still reasonably parse a routine in language Y (and translate to language X if need be), probably with some help from the docs for interpreting syntax. – J. M. Dec 12 '10 at 15:35
FWIW: I have been doing mathematical research -- including some computer computations -- for about ten years. I have literally never used MATLAB. I am honestly not sure whether I've ever used Mathematica -- certainly not in the last several years and never for any serious purpose. My programs of choice are gp/pari, MAGMA and SAGE. I am actually somewhat skeptical that a majority of pure mathematicians use Mathematica in any substantial way. E.g., my department, we have one such person who is very enthusiastic about Mathematica. – Pete L. Clark Dec 13 '10 at 10:47
P.S.: Mathematica and SAGE are about as incomparable as two mathematical software packages can be. – Pete L. Clark Dec 13 '10 at 10:48

Mathematica is the de-facto standard for symbolic computation. I would argue that there is no other CAS that matches the sheer amount of stuff that Mathematica can do (this is not to say that there aren't other systems out there that do certain things better - like graphing/plotting). Part of the power of Mathematica's strength is the ability to write and evaluate expressions just like you would in your notebook (hence the "notebook" UI paradigm) , however, its reliance on symbolic computation also is its greatest weakness (in terms of strength as a programming language, portability, and speed). Just because of its ubiquity, if there is one thing you should learn, it is this.

Matlab is the de-facto standard for numerical computations, under the broad category of numerical analysis. It is less designed for symbolic analysis, but its numerical analysis tools are industry standard. With countless additional packages it can seamlessly (well almost seamlessly, and for several thousand dollars) incorporate data capture from everything from webcams to particle physics experiments. Its usefulness as a pure mathematics tool might not be as as obvious as Mathematica, but if you ever plan on collaborating with applied mathematicians, physicists, or engineers, working knowledge of Matlab is a must.

Python + Scipy + numpy . By combining the free programming/scripting language with powerful (C-based) packages for scientific computation, this suite can rival the numerical analysis tools of Matlab. If you extend this combination with Matlplotlib (numpy based package for plotting) you can get publication quality plots and graphs with a familiar syntax (matlab) for \$0.

GnuPlot. With the ability to graph/plot pretty much anything you want and a very powerful text based input, this software allows you to create publication quality plots with ease (after learning the syntax of course). Plus it is free and open source.

-
If you're missing MATLAB but have no wish to fork dough, there's GNU Octave... – J. M. Dec 12 '10 at 9:24
There are also free alternatives to Mathematica, e.g. maxima.sourceforge.net – Raphael Dec 12 '10 at 11:02
@Raphael: maxima is not an alternative to Mathematica. It is the successor (and competitor before Macsyma shutdown) to Macsyma. I am a big fan of Maxima, but there's now quite a lot more you can do with Mathematica that you cannot compare the two on equal footing. – Willie Wong Dec 12 '10 at 16:12
While I agree with Willie's assessment, I'm of the (probably unpopular) opinion that Mathematica nowadays (since version 6 apparently) is trying too hard to be too many things at once... – J. M. Dec 12 '10 at 16:32
They might not be on equal footing, but the one is free while the other costs hundreds to thousands of euros/dollars. One might want to use the free solution as long as it does everything needed. – Raphael Dec 12 '10 at 17:59

I found Sage pretty useful for number theory and algebraic geometry. But it can do lots of other stuff, too.

-

If you do any commutative algebra or algebraic geometry, Macaulay2 is amazing. It requires minimal system resources and is free. There is a springer book about computations in Macaulay2.

http://www.math.uiuc.edu/Macaulay2/Book/

Also, here is a comparison of computer algebra systems on wikipedia.

http://en.wikipedia.org/wiki/Comparison_of_computer_algebra_systems

-

GAP (http://www.gap-system.org), which is, as it is written on the GAP website, an open source "system for computational discrete algebra, with particular emphasis on Computational Group Theory. GAP provides a programming language, a library of thousands of functions implementing algebraic algorithms written in the GAP language as well as large data libraries of algebraic objects. GAP is used in research and teaching for studying groups and their representations, rings, vector spaces, algebras, combinatorial structures, and more."

The core GAP system is redistributed with its GAP Packages, which extend further the functionality of the system and improve its performance. Some packages include binaries and require separate compilation.

To obtain GAP, go to Downloads . Windows users may use .exe installer with precompiled binaries. Unix and OS X users would have to compile GAP and packages.

-

mpmath, which is a part of sage has great special functions support.

nickle is good for quick things, and has C like syntax.

-