GSoC/GCI Archive
Google Summer of Code 2012

Sage Mathematical Software System

Web Page:

Mailing List:!forum/sage-gsoc


Sage is a GPLed open-source
mathematical software system.

It is designed to be not just a computer algebra system, but more like a complete environment for doing mathematics and related calculations. It is based on a vast collection of existing open-source software tools and libraries and ties them together via Python. This is also the primary interface language for the user and its object-oriented way of expressing concepts is used to express calculations - of course, there are also many “normal” functions :-)

Behind the scenes, the Sage library executes the commands and calculations by its own algorithms or by accessing appropriate routines from the included software packages. On top of that, there are various ways how users can interact with Sage, most notably a dynamic web-site called “Notebook”.

The mission of Sage is to create a viable open-source alternative to all other major proprietary mathematical software systems.

Almost all areas of mathematics are represented in Sage, at various levels of sophistication. This includes symbolic calculus, 2D and 3D graphics, polynomials, graph theory, group theory, abstract algebra, combinatorics, cryptography, elliptic curves and modular forms, numerical mathematics, linear algebra and matrix calculations (over various rings), support for parallel computing, and a powerful coercion framework to “mix” elements from different sets for calculations. Sage’s features also expand into neighboring fields like Statistics and Physics.

Try Sage online!


  • Lattices Lattices arise in many different areas of mathematics such as algebra, geometry, cryptography, and coding theory, so it would be good to have important lattice algorithms implemented in one place in Sage and a framework to implement new algorithms. The goal of this project is to create a lattice class that includes various algorithms for problems such as finding a good base, finding shortest vectors, calculating lattice invariants, and calculating the Voronoi cell of a lattice.
  • NTL/Univariate polynomials and factorization library FLINT already has a code for factorization of polynomials over F_p where p is small (< 2^64). The aim of a project is to implement a factorization algorithm for polynomials over F_p where p is large (>= 2^64).
  • Symbolic Expressions Pynac/GiNaC is designed for symbolic computations. This project is about enhancing and optimizing this crucial and important part of Sage. Pynac replaces the numeric coefficients in GiNaC with python objects. The implementation should be extended to use machine longs and doubles as well as the GMP and MPFR libraries for multi precision integers, rationals and floating point numbers. This would provide a significant speed boost since using these types directly instead of the Python wrappers available in Sage is more efficient.