GSoC 2020: Ideas Page

Introduction

Welcome to Sagemath's Ideas Page for GSoC 2020! (Last year 2019)

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 sage-gsoc 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!

Project Ideas

Here is a list of project proposals with identified mentors. Other well-motivated proposals from students involving Sagemath in a substantial way will be gladly considered, as well.

Berkovich Projective Line

Mentor

Benjamin Hutz

Area

Schemes/Dynamical Systems

Skills

One semester of graduate algebra and analysis, Python, git

Implement a basic framework for working with Berkovich space points and functions

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 proof-of-concept, 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.

Simplicial sets: complete the integration with Kenzo

Mentor

Miguel Marco

Area

Algebraic topology

Skills

Mathematical background on simplicial sets. Experience with Lisp

Kenzo is a Lisp program that is able to compute homology and homotopy groups of a big family of toopological spaces. Sage has an interface to it, but it is not tightly integrated with the existing modules for simplicial sets. This project would consist on iproving the existing interface and integrating it with the simplicial sets module, so we can use kenzo functionalities directly as methods of Sage objects.

It might imply patching Kenzo to support the input provided by Sage.

Diameter, radius, eccentricities, and distances

Mentor

David Coudert

Area

Graph theory

Skills

Knowledge of graph algorithms, Python, C/C++, git

The graph module of Sagemath already provides some smart algorithms for computing the diameter and eccentricity of unweighted undirected graphs, and a large variety of methods for computing paths and distances.

References:

Database of generators and of "sporadic" examples of distance-regular graphs

Mentor

Dima Pasechnik

Area

Graph theory, algebraic combinatorics

Skills

Knowledge of graph algorithms, basic algebra and combinatorics, Python, git

The graph module of Sagemath already provides a database of (generators and examples) of strongly regular graphs, and a numbers of generators for distance-regular graphs. This project will

References:

Fast evaluation of symbolic expressions

Mentor

Vincent Delecroix

Area

Symbolic expression

Skills

Basic math background in algebra and analysis. Fluent in Python and C. Kowledge of compilers, assembler, Cython, or parallelization (openmp) would be interesting.

The simplest example of a function is given by univariate polynomials such as P(x) = x^3 - 2*x + 3. A more complex function is F: (x, y) -> (cos(sqrt(x) + 1) * sin(y), tan(x^2 + 2) + y). For this project we are interested in making the evaluation of such expression at given concrete values fast and reliable. SageMath already has a "compiler" for symbolic expression that is used through fast_callable

sage: x, y = SR.var('x,y')
sage: f = cos(sqrt(x) + 1) * sin(y)
sage: g = fast_callable(f, vars=[x,y], domain=float)
sage: g(2.3, 3.5)
0.2844686555174862

This project will consider