SoCiS 2014 - Public application
A: An introduction
- Please describe yourself in three sentences, one of them regarding your current studies.
I got a Master Of Science degree in Mathematical engineering at Politecnico di Milano and I am currently enrolled as a PhD student at TU-Darmstadt. My native language is Italian, and I'm fluid in English. I can also understand and speak French quite well. My current field of interest is Isogeometric Analysis (in particular applied to electromagnetics and mechanics) both from a mathematical point of view and an engineering one.
- Why do you want to participate to the SoCiS? What do you hope to gain by doing so?
In the last couple of years I worked (and still working) a lot with Octave. I would like to participate to Summer of Code in Space 2014 because I think it would be a great way to improve my programming skills and to get involved with the Octave community.
- Why are you choosing Octave?
I am working on Octave daily and I feel like it would be nice to be able to give my contribution to the community.
- Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave.
IRC nick: jacopo (Jacopo on the wiki)
- Which time zone do you live in? Will that change over GSoC duration?
Time zone: UTC+1. It won't change during SoCiS.
- Please state the timeframe (in UTC+0) when you feel most comfortable working during GSoC. Where are your time buffers?
I usually prefer programming in the morning, but this is not a strict preference.
E: Coding experience
- Please describe your experience with C++, Octave or Matlab m-scripts, OpenGL and Qt.
I have worked with Matlab and Octave for a long time, in particular I am currently using the NURBS toolbox, GeoPDES and some Matlab optimization tools. I know C++ quite well and I worked for some months last year on a C++ library analogous to GeoPDEs.
- Please describe your experience with other programming languages.
During my master I worked for some time with FreeFEM++. I have basic knowledge of parallel computing with openMP, MPI and CUDA. I don't have a lot of experience with other languages, but I love programming and I am eager to learn.
- Please describe your experience with being in a development team.
I never worked in projects involving more than two or three people, but I am used to collaborate with others since I worked on several small projects with friends during my studies.
- Please describe the biggest project you have written code for and what you learned by doing so. Also describe your role in that project over time.
My biggest project so far was my Master thesis. I worked on the coding of a C++ library similar to GeoPDEs and then with GeoPDEs itself to solve electromechanical problems. I am continuing this work for my PhD.
- Please state the commits and patches you already contributed to Octave.
I collaborated to the NURBS toolbox, mainly by developing the 'kntremove' function.
F: Feeling fine
- Please describe (in short) your experience with the following tools
- IRC and mailing lists
I have a little experience with mailing lists.
- Mercurial or other source code management systems
I mainly used (and use) git.
- Mediawiki or other wiki software
- make, gcc, gdb or other development tools
I have worked with them on many occasions. I also have a basic knowledge of Autotools.
- What will make you actively stay in our community after this GSoC is over?
I am using Octave daily so I am quite motivated in contributing to it.
O: Only out of interest
- Did you ever hear about Octave before?
- If so, when and where? How far have you been involved already?
I heard at the same time about Octave and Matlab around 2007 when I started university. However until a couple of years ago I just used Matlab since it was the common choice at Politecnico di Milano.
- What was the first question concerning Octave you could not find an answer to rather quickly?
I don't recall any particular question that I had problem in finding an answer to. I however am beginning to think that the best source of information is the community itself. I am not yet involved a lot, but I can see that for each problem asked there is always someone ready to give some help.
- Please state the operating system you work with.
I work both on Windows and Linux, but I usually prefer to do my code on Linux.
- Please estimate an average time per day you will be able to access
- an internet connection -> 24h
- a computer -> 16h
- a computer with your progressing work on -> 16h
- Please describe the degree up to which you can install new software on computers you have access to.
- Please describe how useful criticism looks from your point of view as committing student.
I think that criticism is the best way to improve ourselves. I am open to it (I am quite demanding from myself too) and I look forward to participating to the community life.
- How autonomous are you when developing?
- Do you like to discuss changes intensively and not start coding until you know what you want to do?
I usually prefer to know what I am doing and what I want before starting programming. However programming is, for me, also a way to better understand a problem, so it's for me a continuous process of coding and understanding thing better by it.
Y: Your task
- Did you select a task from our list of proposals and ideas?
I would like to take care of the ODE solvers in Octave core (http://wiki.octave.org/Summer_of_Code_Project_Ideas). I think it would be of interest for a wide variety of users and, more personally, I could find it useful for my PhD.
- Please provide a rough estimated timeline for your work on the task.
My rough outline of the project is as follws:
- Asses the current state of the code after the latest modifications (http://geointegratorssocis.blogspot.de/). Ensure that the functions "odeset", "odeget" and (at least) "ode45" are well tested and Matlab-compatible so that they can be added to Octave-core. If necessary add the missing options.
- Add "ode15s" solver for stiff differential equations and DAEs.
- Add "ode15i" solver for implicit differential equations and "decic" function to compute consistent initial conditions. The implementation of this two solver could probably exploit IDA form the sundials library.
- Add "deval" function.
- Tests for the new code and documentation.
Point 1 should not take too long: I checked part of the code and already added some of the missing tests. I believe it is of great importance that the code should maximize compatibility with proprietary software since they are such common functions. From here it will be possible to build the new solvers.
The coding of the solvers (point 2-3) will probably be the most challenging task and it will involve getting to know IDA and/or other already existing code.
The creation of function "deval", once again, goes in the direction of making the package as much compatible as possible with Matlab.
Point 5 is pretty straightforward, but really necessary since I already found a lot of discrepancies between the documentation and the current state of the code.
I don't have any particular restriction for the actual coding period. If the start and end of the project should shift it shouldn't be a problem for me.