GSoC 2024: Ideas Page
Introduction
Welcome to SageMath's Ideas Page for GSoC 2024! (Last year 2023)
The Timeline for GSoC 2024.
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. Also, please subscribe to the sage-gsoc mailing list and the Sage developer list. Archives of past GSoC project ideas can be found here.
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 wishlist for new features in our open GitHub Issues. They might contain or inspire the perfect project idea for you that we didn't even think about! Note that projects can be one of three lengths:
- Small: 90 hours
- Medium: 175 hours
- Large: 350 hours
Contents
- GSoC 2024: Ideas Page
-
Project Ideas
- Improve (free) module implementations
- Coordinate the graded commutative algebra and exterior algebra implementations and Gröbner bases
- Direct implementation of Chow rings of matroids
- Improve combinatorial species
- Tensor operations in Sage using Python libraries as backends
- Integration of Sage with proof assistants / theorem provers / SMT systems / constraint programming systems
- Enhanced optimization solver interfaces for Sage
- Connecting manifolds and optimization
- Poincare normal form of Riemann matrices
- Create an interface to the SmallGrp database
- Implement matrix spaces over commutative semirings
Project Ideas
Here is a list of project proposals with identified mentors. Other well-motivated proposals from prospective contributors 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 object-oriented programming. Cython experience is highly recommended. |
Length |
175 hours |
Difficulty |
Medium-easy |
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).
Coordinate the graded commutative algebra and exterior algebra implementations and Gröbner bases
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 |
Medium-hard |
A graded commutative algebra (GCA) is an algebra where the even generators commute and the odd generators skew-commute. The implementation currently relies on singular's library plural as a quotient ring of a g-algebra. SageMath has a native implementation of the exterior algebra, but it does not interface well with the GCA implementation. The primary goal of this project would be to improve the interaction between the two implementations; likely with a native implementation of GCAs. A second goal would be to improve the implementation of SageMath's implementation of Gröbner bases for the exterior algebra, which is currently quite slow (see, e.g., #34437). For the ambitious, these computations would be extracted to an independent C++ library for many common rings (implemented using other libraries).
Direct implementation of Chow rings of matroids
Mentor |
Travis Scrimshaw |
Area |
Algebra, Combinatorics |
Skills |
Foundations in algebra and combinatorics, experience reading research papers recommended. |
Length |
175 hours |
Difficulty |
Medium-hard |
SageMath currently has an implementation of the Chow ring of a matroid, but it is based on constructing the explicit ideal and taking the corresponding quotient ring. However, explicit an Gröbner basis is known and could be used to implement the multiplication directly. This would require a custom class for the Chow rings, which is the main goal of this project. This would significantly speed up the construction and computations, as well as give more features that are not currently implemented from the generic quotients. See #36479.
Improve combinatorial species
Mentor |
Martin Rubey |
Area |
Combinatorics |
Skills |
Knowledge of combinatorial species or group actions |
Length |
350 hours |
Difficulty |
Medium-hard |
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 Usain-Boltz
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
Tensor operations in Sage using Python libraries as backends
Mentor |
|
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.
Other relevant reading:
- https://data-apis.org/array-api/latest/API_specification/array_object.html - https://dmlc.github.io/dlpack/latest/python_spec.html
(Remark: It might be worth looking at the TensorSpace project for Magma.)
Integration of Sage with proof assistants / theorem provers / SMT systems / constraint programming systems
Mentor |
|
Area |
Various |
Skills |
Solid knowledge of a system such as LEAN, Isabelle, CVC5, MiniZinc; Python experience |
Length |
350 hours |
Difficulty |
Hard |
Enhanced optimization solver interfaces for Sage
Mentor |
|
Area |
Optimization |
Skills |
Solid knowledge of linear optimization, Python experience, ideally experience with Python optimization interfaces |
Length |
350 hours |
Difficulty |
Hard |
See Meta-ticket #26511: Use Python optimization interfaces: SCIP, cvxpy, PuLP, Pyomo, cylp...
Connecting manifolds and optimization
Mentor |
|
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 Meta-ticket #26511, Meta-ticket #30525
Poincare normal form of Riemann matrices
Mentor |
|
Area |
Algebra, Algebraic Geometry |
Skills |
Knowledge of abstract algebra and Riemann surfaces desirable |
Length |
350 hours |
Difficulty |
Medium-Easy, becoming harder if desired by tackling the research questions |
Riemann surfaces are key objects in many areas of maths, from mathematical physics to algebraic and arithmetic geometry, with modern usage of Sage typically focusing around computing the Riemann matrix and calculating the associated theta function. The project would involve an implementation of Poincare reduction of the Riemann matrix which allows the theta function to be factorised, following the paper of Martens (http://www.jstor.org/stable/43737152), which in turn will require some matrix methods to be implemented. There is scope for an enterprising applicant to make this into a research paper in two directions, either by analysing the improvement to complexity from computing with factorised theta functions, or by developing an algorithm to go from one reduction to a complete reduction.
Create an interface to the SmallGrp database
Mentor |
TBD |
Area |
Group Theory |
Skills |
Group Theory, GAP and Python experience |
Length |
350 hours |
Difficulty |
Medium-hard |
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, non-nilpotent, 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="permutation") 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 summary as in SmallGroupsInformation.
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 |
Medium-hard |
The natural numbers with the standard addition and multiplication, and the min-plus tropical algebra over a commutative ring, are examples of well-known 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.
---
TEMPLATE
Project Title
Mentor
Name(s)
Area
Mathematical and/or technical scope ...
Skills
What the contributor should bring ...
Length
Medium-term or long-term
Difficulty
Easy, medium, hard, etc.
...