18.786 | Spring 2006 | Graduate

Topics in Algebraic Number Theory


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 the MIT network.

The best way to access SAGE for reasonably-sized calculations is to install it on your own computer, either by downloading a binary (for Windows®, MacOS®, Linux®) or compiling it yourself (SAGE is totally open-source). For short calculations, you can use William Stein’s SAGE calculator from any Web browser.

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 Python® 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.)

Course Info

As Taught In
Spring 2006
Learning Resource Types
Problem Sets