GSoC 2021: Ideas Page
Introduction
Welcome to SageMath's Ideas Page for GSoC 2021! (Last year 2020)
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. We also require you to show us that you are able to execute actual development by submitting a relevant patch and/or reviewing a ticket via Trac 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 comprehensive list of future feature wishes in our trac issue tracker. They might contain the perfect project idea for you we didn't even think about!
Contents
 GSoC 2021: Ideas Page

Project Ideas
 Improve support of representation theory (multiple projects)
 Implement Schubert and Grothendieck polynomials
 Implementation of uncrowding algorithm
 Implement Small Groups
 Add support for error terms with explicit constants ("BigEllTerms") to AsymptoticRing
 Quasimodular forms
 Lazy formal power series
 Graph drawing and plotting
 Tensor operations in Sage using Python libraries as backends
 Enhanced optimization solver interfaces for Sage
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 support of representation theory (multiple projects)
Mentor 
Travis Scrimshaw 
Area 
Algebra, Representation Theory, possibly Combinatorics 
Skills 
Understanding of linear algebra, preferably representation theory and algebra, associated combinatorics desirable, Cython experience is good 
Representation theory is the study of symmetries and is an important part of modern mathematics with applications to other fields, such as physics and chemistry. GAP supports doing computations using the characters of representations, but it often does not contain constructions nor manipulations of the modules. There is currently some limited support within Sage for representations as a proofofconcept, but this needs to be expanded and refined. Things that can be added are tensor products (for bialgebras), dual representations (for Hopf algebras), induction and restriction functors, methods to construct representations of groups (e.g., symmetric group), Lie algebra representations, etc.
Implement Schubert and Grothendieck polynomials
Mentor 
Travis Scrimshaw 
Area 
Algebra, Combinatorics, Schubert Calculus 
Skills 
Foundations in combinatorics, experience reading research papers 
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.
Implementation of uncrowding algorithm
Mentor 
Anne Schilling 
Area 
Algebra, Schubert calculus, Combinatorics 
Skills 
Foundation in combinatorics, experience reading research papers 
The uncrowding algorithm for hookvalued tableaux as defined in arxiv:2021.1495 needs to be implemented in Sage. Research code is available, but needs to be integrated into main SageMath.
Implement Small Groups
Mentor 
Mckenzie West 
Area 
Group Theory 
Skills 
Group Theory, GAP and Python experience 
Create a convenient interface to the small groups database, perhaps wrapping the SmallGrp GAP package. This will enable to create all small groups satisfying certain properties (e.g. abelian, solvable, nonnilpotent, given order), 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.
Add support for error terms with explicit constants ("BigEllTerms") to AsymptoticRing
Mentor 
Clemens Heuberger, Benjamin Hackl 
Area 
Algebra, Power Series, Asymptotics 
Skills 
Solid understanding of BigOh notation, Python experience 
Computations with asymptotic expansions occur in many different mathematical subfields; a prominent example is the (average / best / worst case) analysis of algorithms (think: QuickSort requires 2n log(n) + O(n) comparisons to sort a list of length n on average). The current implementation in SageMath (AsymptoticRing) can handle basic computations with these expressions. Within this project, the capabilities of the module should be expanded by implementing a new error term that behaves similarly as a BigOhterm, but also keeps track of the range in which the estimate provided by the term is valid, as well as of the corresponding constant. Such a concept is introduced in the book "Asymptotic Methods in Analysis" by N. G. de Brujin as socalled BigEllterms, but more as a didactic vehicle to motivate the usage of BigOhterms. For practical purposes, having a more explicit bound on the error term is useful nonetheless.
Quasimodular forms
Mentor 
Vincent Delecroix 
Area 
Algebra, Power series, Combinatorics 
Skills 
Solid background in mathematics (algebra, modular forms), Python experience 
Quasimodular forms are algebras of holomorphic functions attached to subgroups of PSL(2,Z). The first task of this project is add support in SageMath for quasimodular forms using the existing implementation of modular forms in sage/modular/ and also in PARI/GP. The second step is to implement the BlockOkounkov bracket that, given a shifed symmetric polynomial, produces a quasimodular form.
References:
 H. Cohen, F. Stromberg "Modular Forms: A Classical Approach"
Don Zagier "Partitions, quasimodular forms and the BlochOkounkov theorem"
Lazy formal power series
Mentor 
Martin Rubey 
Area 
Algebra, Power series, Combinatorics 
Skills 
Python experience 
Formal power series are fundamental for many computations, and lazy formal power series are one way to model them on a computer. The aim of this project is to review existing proposals, consolidate the existing code and disentangle it from unrelated code (in the combinatorial species module).
Graph drawing and plotting
Mentor 
David Coudert 
Area 
Graph Theory, algorithms 
Skills 
Python and javascript experience 
We have currently several methods to display graphs, but all these methods lack of flexibility and functionalities. For instance, it is currently not possible to specify the width of a given edge when using our interface to d3.js. The aim of this project is to improve the drawing functionalities of graphs.
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, or TensorFlow 
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.
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 
See Metaticket #26511: Use Python optimization interfaces: PuLP, Pyomo, cylp...

TEMPLATE
Project Title
Mentor
Name(s)
Area
Mathematical and/or technical scope ...
Skills
What the student should bring ...
...