Summer of Code - Getting Started: Difference between revisions

→‎Suggested projects: itemize required skills, difficult, and mentors for each project
(→‎Improve logm, sqrtm, funm: add details on required skills and difficulty of project)
(→‎Suggested projects: itemize required skills, difficult, and mentors for each project)
Line 89: Line 89:
This function should eventually be included in Octave core together with the other [http://hg.savannah.gnu.org/hgweb/octave/file/tip/scripts/ode/ ODE solvers] that will be released with version 4.2, but could be intially developed as an addition to the [https://sourceforge.net/p/octave/odepkg/ci/default/tree/ odepkg] package.
This function should eventually be included in Octave core together with the other [http://hg.savannah.gnu.org/hgweb/octave/file/tip/scripts/ode/ ODE solvers] that will be released with version 4.2, but could be intially developed as an addition to the [https://sourceforge.net/p/octave/odepkg/ci/default/tree/ odepkg] package.


'''Required skills''': C++; C; familiarity with numerical methods for DAEs; Basic knowledge of makefiles and/or autotools.
* '''Required skills'''
'''Difficulty''': medium.
: C++; C; familiarity with numerical methods for DAEs; Basic knowledge of makefiles and/or autotools.
'''Potential mentors''': Carlo de Falco, Marco Caliari, Jacopo Corno, Sebastian Schöps
* '''Difficulty'''
: Medium.
* '''Potential mentors'''
: Carlo de Falco, Marco Caliari, Jacopo Corno, Sebastian Schöps


=== Improve logm, sqrtm, funm ===
=== Improve logm, sqrtm, funm ===
Line 97: Line 100:
The goal here is to implement some missing Matlab functions related to matrix functions like the [http://en.wikipedia.org/wiki/Matrix_exponential matrix exponential]. There is [http://octave.1599824.n4.nabble.com/matrix-functions-td3137935.html a general discussion] of the problem. A good starting point for available algorithms and open-source implementations is Higham and Deadman's  [http://eprints.ma.man.ac.uk/2102/01/covered/MIMS_ep2014_8.pdf "A Catalogue of Software for Matrix Functions"].
The goal here is to implement some missing Matlab functions related to matrix functions like the [http://en.wikipedia.org/wiki/Matrix_exponential matrix exponential]. There is [http://octave.1599824.n4.nabble.com/matrix-functions-td3137935.html a general discussion] of the problem. A good starting point for available algorithms and open-source implementations is Higham and Deadman's  [http://eprints.ma.man.ac.uk/2102/01/covered/MIMS_ep2014_8.pdf "A Catalogue of Software for Matrix Functions"].


* '''Required skills''': Read and Write both C++ and Octave code, find and read research papers, research experience in numerical analysis, familiarity with analysis of algorithms.
* '''Required skills'''
* '''Difficulty''': Difficult.
: Read and Write both C++ and Octave code, find and read research papers, research experience in numerical analysis, familiarity with analysis of algorithms.
* '''Potential mentors''': Jordi Gutiérrez Hermoso
* '''Difficulty'''
: Difficult.
* '''Potential mentors'''
: Jordi Gutiérrez Hermoso


=== Generalised eigenvalue problem ===
=== Generalised eigenvalue problem ===
Line 105: Line 111:
[http://www.mathworks.com/help/techdoc/ref/eig.html Certain calling forms] of the <tt>eig</tt> function are currently missing, including preliminary balancing; computing left eigenvectors as a third output; and choosing among generalized eigenvalue algorithms. See also [http://octave.1599824.n4.nabble.com/General-eigenvalue-problem-proposal-td4651990.html this discussion].  
[http://www.mathworks.com/help/techdoc/ref/eig.html Certain calling forms] of the <tt>eig</tt> function are currently missing, including preliminary balancing; computing left eigenvectors as a third output; and choosing among generalized eigenvalue algorithms. See also [http://octave.1599824.n4.nabble.com/General-eigenvalue-problem-proposal-td4651990.html this discussion].  


'''Required skills''': C++; familiarity with numerical linear algebra and LAPACK.
* '''Required skills'''
 
: C++; familiarity with numerical linear algebra and LAPACK.
'''Difficulty''': medium.
* '''Difficulty'''
 
: Medium.
'''Potential mentor''': Nir Krakauer
* '''Potential mentor'''
: Nir Krakauer


=== TISEAN package ===
=== TISEAN package ===
Line 121: Line 128:
* [https://sourceforge.net/p/octave/tisean/ci/default/tree/ Package repository at source forge.]  
* [https://sourceforge.net/p/octave/tisean/ci/default/tree/ Package repository at source forge.]  


'''Required skills''': m-file scripting, c/C++ and FORTRAN API knowledge.  
* '''Required skills'''
 
: m-file scripting, c/C++ and FORTRAN API knowledge.  
'''Difficulty''': easy/medium
* '''Difficulty'''
 
: easy/medium
'''Mentor''': [[User:KaKiLa]]
* '''Mentor'''
: [[User:KaKiLa]]


=== Symbolic package ===
=== Symbolic package ===
Line 133: Line 141:
The main aim of this proposed project is to implement (or even better co-opt an existing) C/C++ oct-file interface that interacts with Python as a library, and e.g., deals gracefully with exceptions.  This could either supplement the existing IPC or replace it altogether.
The main aim of this proposed project is to implement (or even better co-opt an existing) C/C++ oct-file interface that interacts with Python as a library, and e.g., deals gracefully with exceptions.  This could either supplement the existing IPC or replace it altogether.


'''Required skills''': m-file scripting, C/C++, and Python
* '''Required skills'''
 
: m-file scripting, C/C++, and Python
'''Difficulty''': easy/medium
* '''Difficulty'''
 
: easy/medium
'''Mentor''': Colin B. Macdonald
* '''Mentor'''
: Colin B. Macdonald


=== Interval package ===
=== Interval package ===
Line 146: Line 155:
* Make the package support N-dimensional arrays, this requires less knowledge of interval arithmetic but can be a rather exhaustive job since it affects most function files in the package
* Make the package support N-dimensional arrays, this requires less knowledge of interval arithmetic but can be a rather exhaustive job since it affects most function files in the package


'''Required skills''': m-file scripting, basic knowledge of computer arithmetics (especially floating-point computations), interval analysis (depending on the functions to implement)
* '''Required skills'''
 
: m-file scripting, basic knowledge of computer arithmetics (especially floating-point computations), interval analysis (depending on the functions to implement).
'''Difficulty''': medium
* '''Difficulty'''
 
: Medium.
'''Mentor''': [[User:oheim|Oliver Heimlich]]
* '''Mentor'''
: [[User:oheim|Oliver Heimlich]]


=== Improve iterative methods for sparse linear systems ===
=== Improve iterative methods for sparse linear systems ===
Line 163: Line 173:
The reference book is available [www-users.cs.umn.edu/~saad/IterMethBook_2ndEd.pdf here]
The reference book is available [www-users.cs.umn.edu/~saad/IterMethBook_2ndEd.pdf here]


 
* '''Required skills'''
'''Mentor''': Marco Caliari, Carlo de Falco
: Not yet listed.
* '''Difficulty'''
: Not yet listed.
* '''Mentor'''
: Marco Caliari, Carlo de Falco


== Infrastructure ==
== Infrastructure ==
Line 189: Line 203:
In addition, package names may start to collide very easily. One horrible way to workaround this by is choosing increasingly complex package names that give no hint on the package purpose. A much better is option is providing an Authority category like Perl 6 does. Nested packages is also an easy way to provide packages for specialized subjects (think {{codeline|image::morphology}}). A new {{codeline|pkg}} would think all this things now, or allow their implementation at a later time. Read the [[OEP:pkg|unfinished plan]] for more details.
In addition, package names may start to collide very easily. One horrible way to workaround this by is choosing increasingly complex package names that give no hint on the package purpose. A much better is option is providing an Authority category like Perl 6 does. Nested packages is also an easy way to provide packages for specialized subjects (think {{codeline|image::morphology}}). A new {{codeline|pkg}} would think all this things now, or allow their implementation at a later time. Read the [[OEP:pkg|unfinished plan]] for more details.


'''Minimum requirements''': Ability to read and write Octave code, experience with Octave packages, and understanding of the basics of autotools. The most important skill is software design.
* '''Minimum requirements'''
 
: Ability to read and write Octave code, experience with Octave packages, and understanding of the basics of autotools. The most important skill is software design.
'''Difficulty''': Easy to Medium
* '''Difficulty'''
 
: Easy to Medium.
'''Mentor''': Carnë Draug
* '''Mentor'''
: Carnë Draug


== Image Analysis ==
== Image Analysis ==
Line 205: Line 220:
This project will continue on the previous work, and be mentored by the previous GSoC student and current image package maintainer. Planning the project requires selection of functions lacking ND support and identifying their dependencies. For example, supporting {{codeline|imclose}} and {{codeline|imopen}} was better implemented by supporting {{codeline|imerode}} and {{codeline|imdilate}} which then propagated ND support to all of its dependencies. These dependencies need to be discovered first since often they are not being used yet, and may even be missing function. This project can also be about implementing functions that have [http://wiki.octave.org/Image_package#Missing_functions not yet been implemented]. Also note that while some functions in the image package will accept ND images as input, they are actually not correctly implemented and will give incorrect results.
This project will continue on the previous work, and be mentored by the previous GSoC student and current image package maintainer. Planning the project requires selection of functions lacking ND support and identifying their dependencies. For example, supporting {{codeline|imclose}} and {{codeline|imopen}} was better implemented by supporting {{codeline|imerode}} and {{codeline|imdilate}} which then propagated ND support to all of its dependencies. These dependencies need to be discovered first since often they are not being used yet, and may even be missing function. This project can also be about implementing functions that have [http://wiki.octave.org/Image_package#Missing_functions not yet been implemented]. Also note that while some functions in the image package will accept ND images as input, they are actually not correctly implemented and will give incorrect results.


'''Required skills''': m-file scripting, and a fair amount of C++ since a lot of image analysis cannot be vectorized. Familiarity with common CS algorithms and willingness to read literature describing new algorithms will be useful.  
* '''Required skills'''
 
: m-file scripting, and a fair amount of C++ since a lot of image analysis cannot be vectorized. Familiarity with common CS algorithms and willingness to read literature describing new algorithms will be useful.  
'''Difficulty''': difficult
* '''Difficulty'''
 
: Difficult.
'''Potential mentor''': Carnë Draug
* '''Potential mentor'''
: Carnë Draug


=== Improve Octave's image IO ===
=== Improve Octave's image IO ===
Line 228: Line 244:
* prepare a matlab compatible implementation of the FITS package for inclusion in Octave core
* prepare a matlab compatible implementation of the FITS package for inclusion in Octave core


'''Required skills''': knowledge of C++ and C since most libraries are written in those languages
* '''Required skills'''
 
: Knowledge of C++ and C since most libraries are written in those languages.
'''Difficulty''': medium
* '''Difficulty'''
 
: Medium.
'''Potential mentor''': Carnë Draug
* '''Potential mentor'''
: Carnë Draug


<noinclude>
<noinclude>