18.786 Computing Notes

Part of the goal of this course is to get you used to performing numerical experiments, since that is and has always been how many results in number theory were first discovered. There are a number of software packages that can be used for this, each of which has various strengths and weaknesses.

For this course, I am using a brand-new system called SAGE (Software for Algebra and Geometry Exploration), which I find superior to other systems because the authors (William Stein and his collaborators) did not simply make up a poorly thought-out programming and interaction environment. Instead, SAGE is built on top of the programming language Python, which is one of the most popular scripting languages in use today mainly because it is well-conceived: its code is easy to read and write, and it facilitates object-oriented programming. The mathematical internals of SAGE are modeled on Magma, a system which is justly renowned for facilitating the manipulation of complex mathematical objects (rings, modules, groups, schemes...) but which is proprietary and unavailable on Athena.

You can access SAGE in several ways.

The SAGE home page is where you will find binaries, source code, documentation, and other helpful stuff; there is also a sourceforge page.

If you have never seen Python before, you might also want to check out the home page, which includes lots of documentation, including a tutorial. Even if you don't really know anything about programming, it's relatively easy to get started with Python. (Since this is a number theory course and not a programming course, the programming will tend to be pretty light.)