583
Comment:

3946

Deletions are marked like this.  Additions are marked like this. 
Line 1:  Line 1: 
= Projects and ideas for GSoC 2015 =  = Project ideas for GSoC 2015 = 
Line 3:  Line 3: 
* new notebook modes that force execution from top to bottom for reproducible computations * native GUI ([[https://code.google.com/p/spyderlib/Spyder]] * Generic framework to choose between different implementations of algorithms. In Sage there are various places where we have several possibilities to execute a task (e.g. calling pari or gap). It would be interesting to have a way of choosing the default parameters by performing benchmarkings at build time. That would also allow to check coherency between various implementations. 
== Introduction == Sage is a GPLed opensource 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 opensource software tools and libraries and ties them together via Python. This is also the primary interface language for the user and its objectoriented 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 website called “Notebook”. All projects will start with an introduction phase to learn about Sage’s internal organization and to get used to its established development process. This is documented in the documentation for developers and all students will be instructed by the mentors on how to get their hands dirty. We use Git for revision control and trac for organizing development and code review. Our license is GPLv2+. Feel free to contact Mentors before you send us project proposals. Feel free to introduce yourself and your project idea in our [[https://groups.google.com/forum/#!forum/sagegsocmailing list]]. To get a better feeling how Sage works, please check out the [[http://sagemath.org/doc/developer/index.htmldeveloper guide]]. <<TableOfContents()>> == Notebook mode with execution from top to bottom == In the current notebook (both Sage notebook and IPython notebook) the cells can be executed in any order. From a teaching point of view this is terrible and from a scientific point of view this leads to highly non reproducible computations. The purpose of this task is to have a new mode for the IPython notebook that would force computations from top to bottom. If a cell is executed, then the state in which it is executed must be the one you obtain by executing all the cells above it. In order to make it work, one needs to save the Python state after each cell. Note: This is not completely Sage oriented... (see with IPython people)  Mentor  ...   Difficulty  ...   Skills  ...  == Native GUI == Adapt [[https://code.google.com/p/spyderlib/Spyder]] to work with Sage. See also [[https://groups.google.com/forum/#!topic/sagedevel/87Rlenvcfrsthis thread on sagedevel]].  Mentor  ...   Difficulty  ...   Skills  ...  == Generic Dispatcher == In Sage there are various places where we can choose between several algorithms or underlying softwares to solve a problem. In Sage, this is often related to the presence of the keyword ''algorithm'' or ''method'' in methods and functions. The aim of this task is to build a generic dispatcher that would choose depending on the parameters the fastest solution available. The solution must be very light and not affect performance. The dispatch threshold must be static and decided at build time. This generic dispatcher could also be used to check coherency between the various implementations. Note that it is different from what is called multimethods where the dispatch depends only on the input type. Here we consider a dispatcher that might also depend on the input values. * (draft) timeline: 1. write a simple prototype of generic dispatcher 2. identify Sage functions/methods that could benefit from the dispatcher and test it 3. release a first candidate for the dispatcher 4. Sage integration  Mentor  ...   Difficulty  ...   Skills  good knowledge of Python and notions of Cython and C  == Android App == == iOS App == == SageMathCloud == T.B.A. 
Project ideas for GSoC 2015
Introduction
Sage is a GPLed opensource 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 opensource software tools and libraries and ties them together via Python. This is also the primary interface language for the user and its objectoriented 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 website called “Notebook”.
All projects will start with an introduction phase to learn about Sage’s internal organization and to get used to its established development process. This is documented in the documentation for developers and all students will be instructed by the mentors on how to get their hands dirty. We use Git for revision control and trac for organizing development and code review. Our license is GPLv2+. Feel free to contact Mentors before you send us project proposals.
Feel free to introduce yourself and your project idea in our mailing list.
To get a better feeling how Sage works, please check out the developer guide.
Contents
Notebook mode with execution from top to bottom
In the current notebook (both Sage notebook and IPython notebook) the cells can be executed in any order. From a teaching point of view this is terrible and from a scientific point of view this leads to highly non reproducible computations.
The purpose of this task is to have a new mode for the IPython notebook that would force computations from top to bottom. If a cell is executed, then the state in which it is executed must be the one you obtain by executing all the cells above it. In order to make it work, one needs to save the Python state after each cell.
Note: This is not completely Sage oriented... (see with IPython people)
Mentor 
... 
Difficulty 
... 
Skills 
... 
Native GUI
Adapt Spyder to work with Sage.
See also this thread on sagedevel.
Mentor 
... 
Difficulty 
... 
Skills 
... 
Generic Dispatcher
In Sage there are various places where we can choose between several algorithms or underlying softwares to solve a problem. In Sage, this is often related to the presence of the keyword algorithm or method in methods and functions. The aim of this task is to build a generic dispatcher that would choose depending on the parameters the fastest solution available. The solution must be very light and not affect performance. The dispatch threshold must be static and decided at build time. This generic dispatcher could also be used to check coherency between the various implementations.
Note that it is different from what is called multimethods where the dispatch depends only on the input type. Here we consider a dispatcher that might also depend on the input values.
 (draft) timeline:
 write a simple prototype of generic dispatcher
 identify Sage functions/methods that could benefit from the dispatcher and test it
 release a first candidate for the dispatcher
 Sage integration
Mentor 
... 
Difficulty 
... 
Skills 
good knowledge of Python and notions of Cython and C 
Android App
iOS App
SageMathCloud
T.B.A.