Hey! We're pleased to announce that the Ruby Science Foundation has been accepted as a mentoring organization for Google Summer of Code 2013.
Feel free to reach us by joining
#sciruby on chat.freenode.net or via our mailing list.
You don't need to know a lot about Ruby before proposing a project: depending on how much you already know, it'll be pretty easy to learn enough to be able to contribute. However, you'll need some familiarity with scientific computation. If you don't have any, take a look at "Numerical Recipes in C", which you'll probably find in your university's library.
In any case, if you feel your skills aren't enough for some project, please ask us on our IRC channel (see contact section above) and we can help you.
Our number-one priority right now as an organization is NMatrix. Other priorities come close, but so far we haven't seen a lot of students expressing interest in NMatrix. In contrast, tons of folks have talked about how to accomplish the Ruby D3 idea, so there will be a lot of competition for that spot. Take this as a hint.
NMatrix is SciRuby's numerical matrix core, implementing dense matrices as well as two types of sparse (linked-list-based and Yale/CSR). NMatrix is a fairly new but well-established project which has received Summer-of-Code-like grants from both Brighter Planet and the Ruby Association (in other words, from Matz, who created Ruby). Those who contribute to NMatrix will likely eventually become authors of a jointly-published peer-reviewed science article on the library. Additionally, NMatrix is a good place to gain practical C and C++ experience, while also working to improve Ruby.
NMatrixmethods which depend upon ATLAS, cBLAS, and cLAPACK functions.
gemm(matrix multiplication) which are typically used for rational matrices. Since we have to go to the trouble of implementing rational versions of many ATLAS functions, it might be useful to also have more simplistic ATLAS-free complex and floating-point versions of those ATLAS functions as well -- primarily for those who don't have LAPACK. They wouldn't be as heavily optimized, but would serve in a tight spot.
mkmffor compilation of its C and C++ code, as well as linking ATLAS, LAPACK, and BLAS. But
mkmfis difficult to use, and leads to compilation and linking problems -- not just in NMatrix but elsewhere as well, and particularly when working on multiple platforms (Linux, Mac, Windows, etc.). It'd be better to have a custom
extconf.rb-related library for NMatrix to use for linking highly-specialize C libraries like ATLAS. A successful implementation of this project would significantly reduce barriers for NMatrix adoption (e.g., by eliminating compiling and linking difficulties).
mkmfrequire that the student develop a good understanding of C as well as Ruby. Some prior familiarity with C and C++ would be beneficial.
mkmfis the library Ruby uses, typically in
extconf.rbin gems or other libraries (including NMatrix), for linking C and C++ extensions. It lacks documentation. Most people currently figure it out by trial-and-error.
mkmf-related project would accomplish both of the following goals:
mkmfand how it is used by other Ruby extensions, in order to determine common use cases.
mkmf, which improves Ruby extension compilation and linking, and show how your work makes it easier to achieve the use-cases from #1.
Such a project would be extremely popular in the broader Ruby community.
SciRuby::Dataframe.csv("data.csv")or similar. Can use a simpler parser, e.g. stdlib's CSV module, for now, but will eventually need a faster one.
Statsample is an essential scientific library which brings statistical functions to Ruby. Currently, it depends upon Ruby/GSL, which conflicts with NMatrix. To bring it up to spec, it needs to require the SciRuby fork of rb-gsl instead. There has been some talk of removing support for Ruby versions prior to 1.9.3. Additionally, but no less importantly, a student could work on implementing Generalized Linear Models (GLM) and Time Series Analysis. Lastly, Statsample depends upon Distribution, which makes available statistical distribution functions for users of MRI (in pure Ruby and through GSL) and JRuby. Many of these functions remain unimplemented, or need a JRuby or GSL or pure Ruby version written.
Minimization and Integration are two SciRuby modules which are used by Claudio Bustos' statsample gem. For Minimization, students would research and suggest additional minimization methods, develop tests, and improve documentation. For Integration, students would implement additional numerical integration methods and add support for solving various types of (ordinary and/or partial) differential equations. We need to be explicit about the imprecisions and performance of each method, so benchmarks will be necessary. As always, the student is expected to write tests and document code. There has been some talk of removing support for Ruby versions earlier than 1.9.3 for both Integration and Minimization.