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.

C: Contact

Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave.

IRC nick: jackC

Which time zone do you live in? Will that change over GSoC duration?

Time zone: UTC+2. 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?

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.

kntremove function in the NURBS toolbox

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

None.

  • 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?

Of course!

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?

P: Prerequisites

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.

Total freedom.

S: Self-assessment

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. This should include the GSoC midterms and personal commitments like exams or vacation ("non-coding time"). Optionally include two or three milestones you expect.
  1. 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.
  2. Add "ode15s" solver for stiff differential equations and DAEs.
  3. Add "ode15i" solver for implicit differential equations and "decic" function to compute consistent initial conditions.
  4. Add "deval" function.
  5. Tests for the new code and documentation.