GSoC/GCI Archive
Google Summer of Code 2015

Sage Mathematical Software System

License: GNU General Public License version 2.0 (GPLv2)

Web Page:

Mailing List:!forum/sage-gsoc

SageMath is an open-source mathematical software system.


It combines numerous open-source software libraries under one umbrella and contains many unique and novice algorithms built on top of those libraries. Besides a command-line and programming-library interface, its primary user interface is a dynamic self-hosted website. Besides running a local copy, public Sage servers offer an easy access to Sage via the web-browser and have shown to be very popular.

Python is the main programming language inside the Sage library and also the language of choice for all interactions with the built-in objects and functions for expressing mathematical concepts and calculations. The mission of Sage is to create a viable open-source alternative to all major proprietary mathematical software systems. The goal of the Sage foundation is to support the development of the mathematical software system Sage.

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 neighbouring fields like Statistics and Physics.


  • (Multivariate) Asymptotic Expressions The aim of this GSoC-Project is to extend the functionality of the framework from Trac ticket #17601 ( I propose the following three steps: (1) Extending the existing framework to support high-level operations like exp or log. (2) Implementing the cartesian product of growth groups such that more complex and/or multivariate expressions can be constructed. (3) Embedding this framework into SageMath (e.g. interplay with the symbolic ring).
  • Connectivity and optimization algorithms in matroids This project implements a few fast optimization algorithms on matroids. This includes fast algorithms for matroid intersection(weighted/unweighted), 3-connectivity algorithm by Bixby and Cunningham (1979), 4-connectivity by Rajan (1987) and higher level connectivity algorithms using matroid intersection. The project will also provide useful examples of matroid intersection.
  • Extending Game Theory in Sage The main objective of this project would be to extend the game theory component of sage. This would be carried out in three parts, solvers and game generators and game classes. For the first part I would like to integrate the solvers within gambit for N-player games as well as the LH algorithm within sage. Also an implementation of game generators capable of generating different instances given a family of games and finally, the addition of a class of polymatrix games.
  • Performance Improvements for the Graph Module of Sagemath In the context of libraries of graph algorithms, the graph module of Sagemath stands out for its simple and well-commented code; however, our preliminary testing outlined that some of its algorithms are not as efficient as other implementations, like Boost graph library or igraph. This project will try to address this issue: the main goal is to wrap more efficient graph libraries (a ticket about Boost is already present), but we might also improve existing algorithms, if time allows.
  • SageMathCloud personal version A personal GPL-licensed version of SageMathCloud included with every copy of Sage, as described on