Summer of Code - Getting Started: Difference between revisions

More stuff...
(More stuff...)
Line 32: Line 32:


[http://www.mathworks.com/help/techdoc/ref/eig.html Certain calling forms] of the <tt>eig</tt> function are missing. The problem is to understand what those missing forms are and implement them.
[http://www.mathworks.com/help/techdoc/ref/eig.html Certain calling forms] of the <tt>eig</tt> function are missing. The problem is to understand what those missing forms are and implement them.
=== Various sparse matrix improvements ===
The implementation of sparse matrices in Octave needs several improvements. Any of [[Projects:Sparse matrices|these]] would be good. The paper by [http://arxiv.org/abs/cs.MS/0604006 Bateman & Adler]is good reading for understanding the sparse matrix implementation.


== GUI ==
== GUI ==
Line 43: Line 47:
=== Finish the Octave GUI ===
=== Finish the Octave GUI ===


The GUI currently on its own branch in hg. It is not stable enough and its design is still in flux.
The GUI currently on its own branch in hg. It is not stable enough and its design is still in flux. It needs to be finished.


=== Integrate the GUI with the Octave build system ===
=== Integrate the GUI with the Octave build system ===
Line 52: Line 56:


Octave has had for some time a native OpenGL plotter. The plotter requires some user interaction for manipulating the plots, and it's been using fltk for quite some time. We want to replace this with Qt, so it fits better with the overall GUI look-and-feel and is easier to extend in the future.
Octave has had for some time a native OpenGL plotter. The plotter requires some user interaction for manipulating the plots, and it's been using fltk for quite some time. We want to replace this with Qt, so it fits better with the overall GUI look-and-feel and is easier to extend in the future.
=== Create a better (G)UI for the profiler ===
During GSoC 2011, Daniel Kraft successfully implemented a profiler for Octave. It needs a better interface and a way to generate reports. This may be done with Qt, but not necessarily, and HTML reports might also be good.


== Graphics ==
== Graphics ==
Line 68: Line 76:


Implement a Cairo-based renderer for 2D-only graphics, with support for PS/PDF/SVG output (for printing). Naturally this requires understanding or learning how [http://en.wikipedia.org/wiki/Cairo_%28software%29 Cairo] works.
Implement a Cairo-based renderer for 2D-only graphics, with support for PS/PDF/SVG output (for printing). Naturally this requires understanding or learning how [http://en.wikipedia.org/wiki/Cairo_%28software%29 Cairo] works.
== Interpreter ==
The interpreter is written in C++, undocumented. There are many possible projects associated with it.
'''Required skills''': ''Very good'' C and C++ knowledge, possibly also understanding of [http://en.wikipedia.org/wiki/Gnu_bison GNU bison] and [http://en.wikipedia.org/wiki/Flex_lexical_analyser flex]. Understanding how compilers and interpreters are made plus being able to understand how to use a profiler and a debugger will probably be essential skills.
'''Difficulty''': Mid hard to very hard. Some of the biggest problems will probably the interpreter.
=== Implement (or improve?) JIT compiling ===
Octave's interpreter is ''''very'''' slow on loops. Implementing JIT compiling would dramatically speed up execution of these loops. This is a very big project, but a dedicated student might make a good attempt of doing this over a summer. There may be some work already in place by the time the summer comes along. The idea is to probably use [http://en.wikipedia.org/wiki/Llvm LLVM] to aid with the JIT compilation.
=== Improve memory management ===
From profiling the interpreter, it appears that a lot of time is spending allocating and deallocating memory. A better memory management algorithm might provide some improvement.