GSoC 2023: Ideas Page
Introduction
Welcome to SageMath's Ideas Page for GSoC 2023! (Last year 2022)
SageMath's GSoC organization homepage  the hub for submitting applications and where the everything on Google's side is organized. (Timeline)
Please subscribe to the sagegsoc mailing list and the GAP developer list for discussion on possible GAP GSoC projects. Also, make sure you have gone through the information regarding application procedures, requirements and general advice. The Application Template is also available on that wiki page. Archives of past GSoC project ideas can be found here.
All projects will start with an introduction phase to learn about SageMath’s (or sister projects') internal organization and to get used to their established development process. (Just in time for GSoC 2023, we have modernized our development workflow, which is now entirely on GitHub!)
We also require you to show us that you are able to execute actual development by submitting a relevant Pull Request and/or reviewing a Pull Request of the project you are interested in applying to. The developer guide is a great comprehensive resource that can guide you through your first steps in contributing to SageMath.
Apart from the project ideas listed below, there is also a long wishlist for new features in our 5000 open GitHub Issues! They might contain or inspire the perfect project idea for you that we didn't even think about!
Contents
 GSoC 2023: Ideas Page

Project Ideas
 Improve (free) module implementations
 Improve exterior algebra and Gröbner bases code and expand to graded commutative algebras
 Implement Schubert and Grothendieck polynomials
 Tensor operations in Sage using Python libraries as backends
 Enhanced optimization solver interfaces for Sage
 Connecting manifolds and optimization
 Create an interface to the SmallGrp database
 Adding PDF documentation compiled in XeTeX
 Implement matrix spaces over commutative semirings
 Improve combinatorial species
 Dynamical Systems with Multiple Functions
 Algorithms for Dynamical Systems
 Plane partitions and alternating sign matrices
 Computational invariant theory
 Enhancements in linear algebra
Project Ideas
Here is a list of project proposals with identified mentors. Other wellmotivated proposals from students involving SageMath in a substantial way will be gladly considered, as well.
Improve (free) module implementations
Mentor 
Travis Scrimshaw 
Area 
Linear Algebra, Performance, Refactoring 
Skills 
Understanding of linear algebra and objectoriented programming. Cython experience is highly recommended. 
Length 
175 hours 
Difficulty 
Mediumeasy 
SageMath has multiple implementations of free modules:
1. Finite dimensional coordinate representations in the "standard" basis using FreeModule that provides both a dense and sparse implementation. 2. Using CombinatorialFreeModule (CFM) as (possibly infinite dimensional) sparse vectors.
There are various benefits to each implementation. However, they are largely disjoint and would mutually benefit from having a common base classes. In particular, having a dense implementation for CFM elements for applications that require heavier use of (dense) linear algebra. The goal of this project is to refactor these classes to bring them closer together (although they will likely remain separate as they are likely not fully compatible implementations for the parents).
Improve exterior algebra and Gröbner bases code and expand to graded commutative algebras
Mentor 
Travis Scrimshaw 
Area 
Algebra, Performance 
Skills 
Understanding of abstract algebra and Cython. Knowledge of Gröbner basis is strongly recommended. 
Length 
175 hour and 350 hour variants 
Difficulty 
Mediumhard 
The exterior (or Grassmann) algebra is a fundamental object in mathematics that recently obtained an implementation of Gröbner bases. However, it is currently quite slow with a goal to improve it (see, e.g., #34437). The second goal of this project would be to implement Gröbner bases for the general graded commutative algebra code within Sage. This includes possibly redoing the underlying implementation to to not rely on the more generic plural for computations (except perhaps those involving ideals). For the ambitious, these computations would be extracted to an independent C++ library for many common rings (implemented using other libraries).
Implement Schubert and Grothendieck polynomials
Mentor 
Travis Scrimshaw 
Area 
Algebra, Combinatorics, Schubert Calculus 
Skills 
Foundations in combinatorics, experience reading research papers. 
Length 
175 hours 
Difficulty 
Mediumhard 
Schubert calculus can roughly be stated as the study of the intersections of lines, through which certain algebras arise that can be represented using Schubert polynomials and Grothendieck polynomials. The main goal of this project is to finish the implementation started in #6629, as well as implement the symmetric Grothendieck polynomials and their duals in symmetric functions. There are also new methods to compute completions in the ring of symmetric functions, allowing expansions of Grothendieck polynomials in Schur functions.
Tensor operations in Sage using Python libraries as backends
Mentor 
Matthias Koeppe 
Area 
Linear/multilinear algebra 
Skills 
Solid knowledge of linear algebra, Python experience, ideally experience with numpy, PyTorch, JAX, or TensorFlow 
Length 
350 hours 
Difficulty 
Hard 
In this project, we develop new backends for the tensor modules from the SageManifolds project. Amongst the goals of the project are such elements as a fast implementation of tensor operations using numpy and using TensorFlow Core and PyTorch.
(Remark: It might be worth looking at the TensorSpace project for Magma.)
Enhanced optimization solver interfaces for Sage
Mentor 
Matthias Koeppe 
Area 
Optimization 
Skills 
Solid knowledge of linear optimization, Python experience, ideally experience with Python optimization interfaces 
Length 
350 hours 
Difficulty 
Hard 
See Metaticket #26511: Use Python optimization interfaces: SCIP, cvxpy, PuLP, Pyomo, cylp...
Connecting manifolds and optimization
Mentor 
Matthias Koeppe 
Area 
Optimization, Differential Geometry 
Skills 
Solid knowledge of nonlinear optimization, basic knowledge of differential geometry, Python experience, ideally experience with Python optimization interfaces 
Length 
350 hours 
Difficulty 
Hard 
See Metaticket #26511, Metaticket #30525
Create an interface to the SmallGrp database
Mentor 
TBD 
Area 
Group Theory 
Skills 
Group Theory, GAP and Python experience 
Length 
350 hours 
Difficulty 
Mediumhard 
Create a convenient Pythonic interface to the small groups database that wraps the SmallGrp GAP package. This will enable to create all small groups satisfying certain properties (e.g. abelian, solvable, nonnilpotent, given order) in an easy way, and to provide information about them. This project should also aim to improve the connection between the implementations of permutation, matrix and finitely presented groups in SageMath. This can also include programmable access to information about each group, like the subgroup lattice, as in GroupNames.
As an example, the interface might be SmallGroups(60, nilpotent=True, type="premutation") for an iterator that return Sage's PermutationGroup objects of all nilpotent groups of order 60, say sorted by GAP ID. For the implementation, the SmallGroups class might inherit from ConditionSet, and add methods for the information the SmallGrp GAP package provides such as cardinality and short summery as in SmallGroupsInformation.
Adding PDF documentation compiled in XeTeX
Mentor 
TBD 
Area 
Documentation, Infrastructure 
Skills 
At least an intermediate knowledge of LaTeX, mostly at resolving compilation errors, and at least a beginner knowledge of Python 
Length 
??? 
Difficulty 
Mediumhard 
XeTeX is a modren TeX engine that have a much better support for unicode input, nonLatin scripts and righttoleft languages than the current pdfTeX engine Sage uses to build the PDF docs. A first step to complete in this project is to make sure the Sage tutorial or "A Tour of Sage" docs compile successfully in XeTeX, in different languages. This project can make building the PDF docs more robust (because they can be built using two different compilers), and make Sage more welcoming for nonEnglish speaking audience. This will also require to use Python for Sphinx configuration, and maybe some shell script or Makefile updates to add a pdfxetex target.
Implement matrix spaces over commutative semirings
Mentor 
TBD 
Area 
Mainly algebra, linear algebra and Sage basic data structures 
Skills 
At least an intermediate knowledge in Python. Knowing Cython or the Sage category framework is a big advantage 
Length 
350 hours 
Difficulty 
Mediumhard 
The natural numbers with the standard addition and multiplication, and the minplus tropical algebra over a commutative ring, are examples of wellknown commutative semirings. The aim of this project is to implement matrix spaces and matrices over such semirings. They have many uses in combinatorics, optimization and other mathematical areas. The mathematical background needed is not advanced. The main difficulty will be to understand the current implementation of matrix spaces over rings, and how to add support for semirings that plays well with it. If time permits, an implementation of polynomial (semi)rings over semirings can be implemented.
Improve combinatorial species
Mentor 
Martin Rubey 
Area 
Combinatorics 
Skills 
Knowledge of combinatorial species or group actions 
Length 
350 hours 
Difficulty 
Mediumhard 
SageMath has a working implementation of combinatorial species. However, this should be improved in many ways. Some of the most important missing features are:
 support for multivariate species and exhaustive generation of isomorphism types for compositions of species
implementation of the Burnside ring
a clever interface to UsainBoltz
It may be necessary to focus on one of these points. Realizing any of the above would count as a success.
See also Metaticket for combinatorial species
Dynamical Systems with Multiple Functions
Mentor 
Alex Galarraga and Ben Hutz 
Area 
Dynamics 
Skills 
At least an intermediate knowledge in Python 
Length 
175 hours 
Difficulty 
Medium 
A typical dynamical system is the iteration of a single function. However, it is possible to create dynamical systems from sets of functions. There are several different definitions that could be applied. For example, an orbit could be the forward images of the point under every function or you could apply a function at random. There is currently nothing implemented for these types of dynamical, but there have been several papers studying them. The goal would be to implement the functionality that would be most helpful to the current research directions in this area.
Algorithms for Dynamical Systems
Mentor 
Alex Galarraga and Ben Hutz 
Area 
Dynamics 
Skills 
At least an intermediate knowledge in Python, basic algebraic number theory 
Length 
175 hours 
Difficulty 
Mediumhard 
This project focuses mainly on two algorithmic improvements. The first is modifying the algorithms of Krumm for points of bounded height to work over rings of integers in number fields. The second is generalizing Well's algorithm for computing the canonical heights beyond QQ to number fields where it is applicable. As time allows, cleaning up some of the open tickets in dynamics would be good too.
Plane partitions and alternating sign matrices
Mentor 
Jessica Striker 
Area 
Combinatorics 
Skills 
Read mathematical papers in combinatorics 
Length 
175 to 350 hours 
Difficulty 
Medium 
There are several things to implement related to plane partitions and alternating sign matrices (ASMs)that are used in current research. Some of these examples include:
* Write iterators for the five or so remaining symmetry classes of plane partitions and ASMs. * Map from ASM to order ideal in tetrahedral poset. * Implement pipe dreams and bumpless pipe dreams – this would also be related to the project implementing Schubert and Grothendieck polynomials
Computational invariant theory
Mentor 
Dima Pasechnik 
Area 
Algebra 
Skills 
Understanding of group actions, knowledge of representation theory preferred 
Length 
175 to 350 hours 
Difficulty 
Mediumhard 
The study of invariants under, e.g., a group action is an active research topic with broad applications. This project would develop the ability within Sage to compute invariants under certain finitelygenerated actions, such as the invariants for linear groups acting on polynomials. In particular, we aim to not restrict ourselves to the characteristic 0 case, but also look at the prime characteristic case. For the latter we will implement Dickson invariants, extenstions of the Molien formula to this case, etc.
Enhancements in linear algebra
Mentor 
Vincent Neiger and Clément Pernet 
Area 
Linear Algebra 
Skills 
Efficient algorithms in exact linear algebra, highperformance linear algebra libraries 
Length 
350 hours 
Difficulty 
Medium 
Sage incorporates stateoftheart libraries for exact linear algebra computations, such as matrix multiplication, reduced echelon form, linear system solving, when the coefficients are in an exact domain such as the integers or finite fields. However, several aspects make the integration of these libraries not yet fully satisfactory. For example, working over a prime field with a prime below about 20 bits, the mere creation of a zero matrix in SageMath takes roughly as long as the call of the underlying fast reduced echelon form procedure (performed by LinBox / FFLASFFPACK in this case). Still about FFLASFFPACK: several available tools in this library are not offered through the Sage interface, constraining the user experience; for example, some pivoting strategies are not available, despite their usefulness in some situations e.g. when one is interested in the preservation of some rank profile properties. Finally, the integration of linear algebra implementations from Flint has been initiated, with a good amount of work already done, but is not fully finalized and has not been merged into Sage. This project aims to make this kind of enhancements, which would lead to more efficient and more versatile finite field linear algebra operations in Sage.

TEMPLATE
Project Title
Mentor
Name(s)
Area
Mathematical and/or technical scope ...
Skills
What the student should bring ...
Length
Mediumterm or longterm
Difficulty
Easy, medium, hard, etc.
...