GSoC/GCI Archive
Google Summer of Code 2013

lmonade: scientific software distribution

Web Page: http://wiki.lmona.de/get_involved/gsoc

Mailing List: https://groups.google.com/forum/?fromgroups#!forum/lmnd-devel

Quick links: lmonade homepage, lmonade GSoC page, project ideas

As a mentoring organization, lmonade promotes ideas to improve various opensource/free mathematical software, especially computational algebra projects.

Mathematical software poses many interesting challenges that provide a concrete introduction to data structures and algorithms as well as various areas of pure mathematics. Proposed projects are usually immediately useful in research, yet they still serve as a good starting point for new developers. We hope that seeing the results will encourage contributors to stick around and help with more advanced problems later on.

lmonade is an umbrella organization for the following projects:

lmonade

lmonade is a platform for development and distribution of scientific software. It creates an environment where software can be installed on various GNU/Linux distributions and OSX without administrative rights. Development of certain packages under this environment is also supported.

Website | lmnd-devel@googlegroups.com | #lmnd on Freenode

Singular

Singular is a computer algebra system for polynomial computations, with special emphasis on commutative and non-commutative algebra, algebraic geometry, and singularity theory.
Singular provides basic multivariate polynomial data structures in Sage as well as most of the advanced commutative algebra functionality. Macaulay2 relies on Singular for multivariate polynomial factorization.

Website | libsingular-devel@googlegroups.com | #lmnd on Freenode

PolyBoRi

PolyBoRi is a C++ library for Polynomials over Boolean Rings, which provides high-level data types for Boolean polynomials. A python-interface yields extensible algorithms for computing Groebner bases over Boolean Rings.

Website | polybori-discuss@lists.sourceforge.net | #lmnd on Freenode

FLINT

FLINT is a C library for number theory. As a part of Sage and Singular, it provides fast arithmetic and factorization for univariate polynomials over the integers and finite fields. For most of this functionality, FLINT has the fastest implementation available, among commercial and open source software packages.

Website | flint-devel@googlegroups.com | #lmnd on Freenode

 

Projects

  • A C++ wrapper for FLINT using expression templates FLINT is a highly optimized library for performing computations in number theory, written in C. Most importantly for this project, it implements basic arithmetic on a number of arbitrary precision data types, including integers, rationals, and polynomials. The aim of this project is to write a C++ wrapper for flint which, using expression templates, compiles down to code which achieves performance as close to native C as possible.
  • Binary decision diagrams for Boolean polynomial rings Zero-suppressed binary decision diagrams are used by Polybori for efficiently representing Boolean polynomials. At the moment, they are manipulated via CUDD, which is not specialized on this type of diagrams and only uses C in the implementation. The goal of the project is implementing an independent library in C++, that is specialized on zero-suppressed binary decision diagrams.
  • New decoding error-correcting codes algorithm for Sage In recent years complexity of decoding linear codes has been one of the most important research topics about linear codes. This problem is known to be NP-hard with arbitrary codes and trying to decode arbitrarily many errors. Nevertheless there is better results that one can apply to specific classes of codes when the number of errors is limited. In this project we present a new decoding algorithm for linear codes over finite fields. This algorithm is based on the computation of the Gröbner basis of the ideal associated to the linear code. One of the tools we use is the free open-source mathematics software SAGE. The main goal of this work is the implementation of the algorithm in order to make a contribution to SAGE in the linear codes area. Also we make a comparison between the new algorithm and the ones already implemented in SAGE and GUAVA, expecting a improvement in the efficiency of the decoding problem.
  • Nightly testing for maths software based on lmonade & Buildbot Continuous integration (CI) is an important part of modern software development practices. Having a proper setup to notify and report problems early improves the quality of software. Setting up a nightly testing and CI environment for a software project is non-trivial. This project is about improving the existing CI infrastructure used by lmonade to take advantage of the build instructions and dependency information stored in its package repository and easily set up nightly testing facilities.