Public application template
A: An introduction
- Please describe yourself in three sentences, one of them regarding your current studies.
My name is Francesco Faccio, I’m a Master’s student in Mathematical Engineering at Politecnico of Milan. I speak Italian and English. My background includes Applied Mathematics, Computer Science and Applied Statistics.
- Why do you want to participate in the Google Summer of Code? What do you hope to gain by doing so?
I would like to participate in the GSoC firstly because I think this is a great opportunity for me to further my skills and gain experience working on a real problem. Secondly, the possibility to help a community growing motivates me to accomplish my goals. This is the first time I participate at the GSoC.
- Why are you choosing Octave?
I’ve been familiar with Octave since when I’ve studied numerical analysis for the first time. I have chosen Octave because the projects proposed deal with two of my main interests: numerical methods and programming. Furthermore, the Octave community is very active and it’s very useful to interact with the maintainers.
- Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave.
IRC nick: ff9 Email: firstname.lastname@example.org
- Which time zone do you live in? Will that change over GSoC duration?
My time zone is UTC+1 and it should not change during GSoC
- Please state the timeframe (in UTC+0) when you feel most comfortable working during GSoC. Where are your time buffers?
I can work around 07:00-09:00, 12:00-18:00, but I’m flexible. I could code also around 19.30-23.30 for few days.
E: Coding experience
This part is one of the more important ones in your application. You are allowed to be as verbose as you want, as long as you stay on topic ;-)
- Please describe your experience with C++, Octave or Matlab m-scripts, OpenGL and Qt.
I have a great experience working with C++11. I have learnt C before C++, working on projects.
I have used Matlab and Octave in my courses of Numerical Mathematics, Numerical Analysis for PDE and OR. I’ve studied and implemented the most common methods for solving linear systems (LU, Chol, QR, Thomas, Jacobi, Gauss-Seidel, Richardson,Conjugate Gradient, Krylov methods), approximating eigenvalues, eigenvectors, roots, interpolation and integration, solving differential equations (Theta method, Runge-Kutta, Adams-Bashforth), solving PDE with finite difference methods (Theta method, Upwind, Lax-Friedrichs, Lax-Wendroff ) and finite element methods (Galerkin).
I’ve worked on a project related to a scheduling problem in a four people team using Matlab: https://www.kaggle.com/c/helping-santas-helpers
- Please describe your experience with other programming languages.
I have attended courses on Python and FORTRAN but I don’t have a good experience. I have done some projects with Mathematica and R.
- Please describe your experience with being in a development team.
I am new to open source community.
- 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.
The biggest project I’ve made (in a two people team) has been the implementation of the Biham-Middleton-Levine traffic model in c++ (a 10ECTS class project). In the first part of the project we’ve learnt how to handle big data matrices, then we’ve written all the classes and methods we needed. The main goal of the project was to implement the most efficient algorithm, so we’ve started to consider dense/sparse matrices and hybrid cases. In the last part of the project we’ve written an OpenMP and MPI version of the code.
Through this project I’ve improved my programming skills, I’ve learnt how to use CMake, Git, Bash.
- Please state the commits and patches you already contributed to Octave.
I will start giving my contribution to the community very soon.
F: Feeling fine
- Please describe (in short) your experience with the following tools:
- IRC and mailing lists
I use IRC channel and the mailing list to contact my mentors and to ask informations.
- Mercurial or other source code management systems
I’ve read the documentation of Mercurial and I’ve started to use it. I’m familiar with Git.
- Mediawiki or other wiki software
I’ve just started to use my account and to explore
- make, gcc, gdb or other development tools
I’m familiar with make and gcc
- What will make you actively stay in our community after this GSoC is over?
I would like to give my contribution to the community after the GSoC. I think I could develope some statistical tools (I’m studying Applied Statistics, AI and Machine Learning).
O: Only out of interest
- Did you ever hear about Octave before?
I’ve used Octave during my courses on Numerical Analysis two years ago at Politecnico of Milan.
- What was the first question concerning Octave you could not find an answer to rather quickly?
“How can I build the development sources?” The problem was due to some setting of my pc.
- Please state the operating system you work with.
Ubuntu 15.04, Windows 10
- Please estimate an average time per day you will be able to access an internet connection, a computer, a computer with your progressing work on.
I will be able to access it for all day.
- Please describe the degree to which you can install new software on computers you have access to.
I can install any software.
- Please describe how useful criticism looks from your point of view as committing student.
I think constructive criticism is the most useful way to improve. I like being criticized because I know that someone takes care of what I’m doing, but sometimes I need also to receive compliments if I deserve them.
- 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? Do you like to code a proof of concept to 'see how it turns out', modifying that and taking the risk of having work thrown away if it doesn't match what the project or original proponent had in mind?
I like to discuss what I want to do before doing it and to receive more feedback. This can only improve the quality of my work. In my experience I’ve also worked autonomously, so I think I can adapt myself to any situation.
Y: Your task
- Did you select a task from our list of proposals and ideas? If yes, what task did you choose? Please describe what part of it you especially want to focus on if you can already provide this information.
Yes, I would like to work on the project “ode15s : Matlab Compatible DAE solver” http://wiki.octave.org/Summer_of_Code_Project_Ideas#ode15s_:_Matlab_Compatible_DAE_solver
- Please provide a rough estimated timeline for your work on the task.
During the GSoC I plan to work 40 hours a week. This is the Timeline I want to follow: (the schedule will be better defined every week till the end of GSoC):
Before 22nd April: -familiarize with the community (using mailing list, IRC Channel, giving my contribution to short projects) -familiarize with Mercurial and autotools -study of SUNDIALS library, Oct and MEX files
22nd April - 22nd May: -study of the existing documentation of ode15s -comparison between ode15s and the other ODE solvers -study of numerical methods for DAEs -Keep in touch with the community and the mentor better defining all the steps we need to reach our goals
23rd May-20th June -Write unit tests -Interface definition -Methods, events definition -Test classes
21st June - 7th August -Add external dependencies (if there will be unexpected problems with SUNDIALS, other libraries like DASPK, DASSL or Rythmos will be considered) -Test classes (with dependencies) -Test the compatibility between Matlab and Octave -Validation test
8th August - 23rd August -Write the documentation and make more tests