Differences between revisions 12 and 13
Revision 12 as of 2017-02-07 04:19:28
Size: 8256
Editor: Stefan
Comment:
Revision 13 as of 2017-02-07 15:32:26
Size: 10580
Editor: tscrim
Comment:
Deletions are marked like this. Additions are marked like this.
Line 115: Line 115:
== Improve Representation Theory ==

|| Mentor || Travis Scrimshaw ||
|| Area || Representation theory, algebra, combinatorics ||
|| Skills || Understanding of algebra, basic understanding of combinatorics, experience with Cython preferred ||

Sage is currently the only software that provides systematic support for crystals,
combinatorial realizations of Kac-Moody algebra representations. However, Sage does
not have a lot of support for other aspects of representation theory and there is
room for improvement in the current code. Some of the potential projects include:

 * Improve the framework and speed of crystals.
 * Implement various bases for the symmetric group algebra.
 * Implement induction and restriction functors.
 * Implement representations for Hecke algebras.
 * Implement group representations as modules.
 * Algorithm to find invariant subspaces [[https://trac.sagemath.org/ticket/11285|#11285]].
 * Finalize implementations of Fock space, Lie algebras, cellular algebras, etc.

== Improve Root and Coxeter Systems ==

|| Mentor || Travis Scrimshaw ||
|| Area || Representation theory, combinatorics, geometry ||
|| Skills || Solid foundation of linear algebra, experience with root systems preferred ||

This project is above improving the implementation of root systems and Coxeter systems
in Sage. It is divided into 3 main areas:

==== Root systems ====

We currently have an implementation of root systems with special inputs for finite and
affine types, but there has been interest to implement an easy system for obtaining hyperbolic
types. One goal is to implement such a system. Another aspect is to make the current
implementation of Dynkin diagrams, Cartan matrices, and root systems more robust.

==== Coxeter systems ====

The currently implementation of Coxeter systems currently uses the root system code
and needs to be improved. In particular, this removing any ambiguity between
types B and C.

==== Weyl groups ====

One last aspect is that the root system code could be used to describe a permutation
representation of finite Coxeter groups, but currently this relies on the
(experimental) GAP3 package. This is not necessary, and we should remove this as a
dependency by doing a direct implementation.

GSoC 2017

Introduction

Google Summer of Code is a highly enjoyable and rewarding way to spend a summer.

→ [[|SageMath's GSoC page to submit your propsoal]] ←

SageMath (or Sage for short) is a GPL open-source mathematical software system. It is designed to be not just a computer algebra system, but more like a complete environment for doing mathematics and related calculations. It is based on a vast collection of existing open-source software tools and libraries and ties them together via Python. Python is also the primary interface language for the user and its object-oriented way of expressing concepts is used to express calculations - of course, there are also many “normal” functions :-) Behind the scenes, the Sage library executes the commands and calculations by its own algorithms or by accessing appropriate routines from the included software packages. On top of that, there are various ways how users can interact with Sage, most notably a dynamic web-site called “Notebook”.

Sage works hand-in-hand with other computational mathematics software systems, such as SymPy, GAP, etc, and can serve as an umbrella organization for GSOC projects for those sister projects.

All projects will start with an introduction phase to learn about Sage’s (or sister projects') internal organization and to get used to their established development process.

For Sage, this is documented in the developers' manual and all students will be instructed by the mentors on how to get their hands dirty. Sage uses Git (accessible at http://git.sagemath.org/) for revision control and trac (accessible at http://trac.sagemath.org) for organizing development and code review. Our license is GPLv2+. Feel free to contact Mentors before you send us project proposals.

/!\ We also require you to show us that you are able to execute actual development by submitting a patch via Sage's trac (i.e. see tickets marked for beginners) or a similar development tool of the respective project.

For Sage, feel free to introduce yourself and your project idea in Sage's GSOC mailing list.

For GAP, feel free to introduce yourself to GAP's developer list. Some discussion of possible GAP GSOC projects is happening at the joint GAP Sage days in St Andrews, see the agenda.

To get a better feeling of how Sage works, please check out the developer guide.

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!

Application Template

Please use this application template, in particular answer the questions thoroughly enough to convince us to pick you!

Personal:

  • Name
  • Contact Information (email, instant messaging, …)
  • Location/Timezone
  • University

Background:

  • What are your technical skills, education, experience, etc. Especially make sure to explain with what level of mathematics you are comfortable with and on what level you would like to program.
  • Who are you? What makes you the best person to work on this particular project? Your personal motivation?
  • What platform and operating-system are you using on your computer? (Sage development is done best on Linux and OSX)
  • Are you or have you been engaged in other open-source projects?
  • Do you code on your own pet projects?
  • Are you a Sage user, how long do you know Sage?

Project:

  • Title, Project Synopsis: a short description and summary of its aim and scope.
  • What is your personal involvement or relationship with your proposed project?
  • Details: describe all the details and explain modules or parts of your whole project. Break down the whole project into individual tasks - as good as possible - and describe deliverable and quantifiable results for each of them. It also helps if you have already discussed this with a possible mentor.
  • Schedule: A timetable, including special circumstances like exams or holidays, for the individual tasks.
  • Risk Management: Try to anticipate potential problems and explain, how to mitigate them. Propose alternative scenarios, if a particular milestone isn't reached, to still successfully complete the project.

Project Ideas

Redesigning the polynomial class hierarchy and linking with libraries

Mentor

Johan Rosenkilde, Jean-Pierre Flori

Area

Basic algebra, C/C++ linking, Cython

Skills

Strong programming skills, familiarity with polynomial algebra

Sage supports univariate and multivariate polynomial arithmetic over general rings with many features. For efficiency, it is crucial that Sage links to low-level implementations for polynomials over certain rings, such as finite fields or integers. These things have been in Sage for a long time, and e.g. much of the linking code was written in early versions of Cython when it was much less powerful than it is now.

It is time to rethink and redesign the class hierarchy and the linking code for polynomials in Sage. The task in this project is to get an overview of the current features Sage supports, what we would like to do forward, and then come up with a better, cleaner design and implementation for doing this. This will entail re-linking to the many projects Sage already talks to, and perhaps find projects that have appeared on the OSS scene since.

Complex and Arithmetic Dynamics in Sage

Mentor

Benjamin Hutz

Area

number theory, algebraic geometry, Python

Skills

strong math background, reasonable programming skills

There is a significant amount of functionality for iteration of functions in Sage. However, there are number of areas where this could be improved. The sage-dynamics wiki lists a number of wish-list projects. Many of them are small and many are inter-related. A proposal could easily combine a number of these to form a complete proposal.

As a few large scope items that seem particularly well suited to GSOC:

  • coercion model for schemes/maps
  • interface with complex dynamics library
  • generic schemes/maps; i.e. charts

But don't feel limited in your proposal to just these items or that you need to include any of these items.

Matroid Theory

Mentor

Stefan van Zwam

Area

Matroid theory, graph theory

Skills

Strong foundation in (discrete) mathematics (PhD student level), strong programming skills, experience reading research papers

Matroid theory in SageMath can be improved in many ways. Some potential topics, of varying difficulty, are:

  • Support for transversal matroids and gammoids
  • Proper support for graphic/cographic/frame matroids (showing the graph, resigning across cuts, Whitney switching, etc.)
  • Tangles and branch decompositions.
  • Faster minor testing (finish ticket 16545, and extend the ideas to non-binary matroids)
  • representability tests over various fields. Maybe use decompositions and stabilizer theorems to cut down on the number of matrices to check?
  • A framework for dealing with minor-closed classes: like a set data structure, but with some support for minors.
  • linear extensions/coextensions that keep track of allowed vectors.
  • Bracket rings/Tutte groups/universal partial fields (needs: strong knowledge of algebra and Groebner bases)

Improve Representation Theory

Mentor

Travis Scrimshaw

Area

Representation theory, algebra, combinatorics

Skills

Understanding of algebra, basic understanding of combinatorics, experience with Cython preferred

Sage is currently the only software that provides systematic support for crystals, combinatorial realizations of Kac-Moody algebra representations. However, Sage does not have a lot of support for other aspects of representation theory and there is room for improvement in the current code. Some of the potential projects include:

  • Improve the framework and speed of crystals.
  • Implement various bases for the symmetric group algebra.
  • Implement induction and restriction functors.
  • Implement representations for Hecke algebras.
  • Implement group representations as modules.
  • Algorithm to find invariant subspaces #11285.

  • Finalize implementations of Fock space, Lie algebras, cellular algebras, etc.

Improve Root and Coxeter Systems

Mentor

Travis Scrimshaw

Area

Representation theory, combinatorics, geometry

Skills

Solid foundation of linear algebra, experience with root systems preferred

This project is above improving the implementation of root systems and Coxeter systems in Sage. It is divided into 3 main areas:

Root systems

We currently have an implementation of root systems with special inputs for finite and affine types, but there has been interest to implement an easy system for obtaining hyperbolic types. One goal is to implement such a system. Another aspect is to make the current implementation of Dynkin diagrams, Cartan matrices, and root systems more robust.

Coxeter systems

The currently implementation of Coxeter systems currently uses the root system code and needs to be improved. In particular, this removing any ambiguity between types B and C.

Weyl groups

One last aspect is that the root system code could be used to describe a permutation representation of finite Coxeter groups, but currently this relies on the (experimental) GAP3 package. This is not necessary, and we should remove this as a dependency by doing a direct implementation.

---

TEMPLATE

Project Title

Mentor

Name(s)

Area

Mathematical and/or technical scope ...

Skills

What the student should bring ...

...

  • ...
  • ...

GSoC/2017 (last edited 2017-02-27 18:12:05 by schilly)