Proposal by Natalia Moskovchuk for SciSmalltalk - Solving Ordinary Differential Equations in Smalltalk

Proposed by Natalia Moskovchuk (profile, biography)

How will I do that project

I have already worked with this project for some time. I know more or less general ideas/architecture and I have contributed some new functionality.
Because of summer holidays I will have a lot of free time, which I can spend on this project.  I'm ready to work on it 25 - 30 hours a week.
First of all - some methods(Euler and midpoint methods, RK4) are already implemented, I will get familiar with existing code and write a little documentation as it is missing. Maybe it will be reasonable to write some tests for them also. Then I going to implement  the rest of numerical methods for ODE solving, supported with tests and documentation.
If there will be some time left I can start to implement numerical partial differential equations methods. Other option would be optimization of the algorithm implementations as speed of execution does matter in numerical methods.

What methodologies will I use

I will use Test Driven Development for this project.

I will try to work in agile style. I will plan what to do in short period of time, work on it, show the result to my mentors and move to the next iteration.
To maintain a good performance I want to benchmark algorithms. I'll try to use Rizel VM for this.

Suggested timeline and milestones

till mid June: understand current situation, write the documentation;

till mid July: write rest of numerical methods for ODE solving, supported with tests and documentation;

till mid September: implementation of PDE solvers or performance optimization.

Where I see the risks

In solving equation higher order and using difficult methods. Some implementation can be much more difficult, than the ones I have encountered and it will take more time, than expected.
Also current architecture may not work with all the methods properly.

How the results will look like

Library, that can be used for calculation and documentation for it. Also I can do some screencasts if needed.
I think that the result of my work can be used in other projects like:

Updated: 2.5.2013