Combinatorics (Math 513) Computational Software

Overview

As part of Math 513, you will likely want to use a computer to play with problems, examples, etc. You are free to use whatever computer software/language you like. For example, if you really wanted to, you could program everything from scratch in C or C++, or could use existing (free) libraries to assist you. You could even program in Malboge. But more likely than not, you will want to use higher-level “calculator” software that has been built with typical number-theoretic and combinatorial computations in mind. This page gives some information about the systems I know about.

WARNING — it is up to you to acquire suitable software to use, to install it on your own computer/tablet/device, and to learn to use it (if you want to use it). This sounds like a daunting task, but actually it’s not that bad. All the things I describe below have excellent documentation and user communities, so they are easy to work with (programming them is like programming MATLAB or something similar). And anyway, this is what happens in “real life”. You show up at a technical job and your boss immediately wants you to figure out how to compute blahbity-blah on OS blah, and needs it done yesterday. In such environments it is generally expected that you will be able to proceed quickly and without complaint (otherwise, they will just hire someone else who can do it). So it’s worth investing time into this. Indeed, if you can do this you will have acquired a valuable (and marketable) skill.

GP-Pari

This is a calculator originally designed for researchers in number theory. It is very fast, has all the functionality one could need for this course, and its scripting language is very easy to learn. I use it daily in my own research, so I’m very familiar with it; it will be the software of choice for class demonstrations. The downside (for some) is that it is terminal-based; there is no fancy GUI or web “worksheet” interface. However if you are old skool like me you don’t want that junk anyway. Many excellent tutorials are available online. You can also use it as a C library (indeed, the original intent of the GP calculator was as a convenient interface for the underlying Pari library).

Available (free) from here.

Sample GP session

Sage

This is a large computer algebra system that incorporates many mathematical computing packages under one roof. In particular it uses the Pari library to implement the number theory computations. Sage is built on Python and so if you are familiar with the latter you will likely be comfortable with Sage. It has a browser “worksheet” interface that many find comfortable. Sage is also becoming more well-known as an analytical tool in the real world, although at the moment not as much as Mathematica. So knowledge of Sage could be a marketable skill.

Available (free) from here.

Mathematica

Mathematica is one of the oldest computer algebra systems; probably you have used it in other courses, or via the Wolfram Alpha web service. It has extensive support for combinatorics.

Mathematica is not free, but as a UMass student you can get it free. Futhermore, according to OIT, Mathematica is available in the computer classrooms on campus.

Mathematica skills are definitely marketable, because it is frequently used in analytical settings. It looks good on your CV.

MAGMA

MAGMA is a general purpose computer algebra system along the same lines as Mathematica, but it was designed with pure mathematics researchers in mind (unlike Mathematica). I am not as familiar with it, but lots of my colleagues use it, and I think it would not be hard to pick it up. MAGMA is also not free, but I believe it is free for anyone working at a US university (in particular with a .edu email address).

Available from here.