A: An introduction
- Please describe yourself in three sentences, one of them regarding your current studies.
- My name is Xie Rui. I am an undergraduate in Tsinghua University, Beijing, China. I am hard-working and have a strong motivation to finish my work completely.
- Which languages do you speak?
- I speak Chinese (native), Engilsh and a little German.
- What's your overall background?
- Electrical Engineering and Automation. Pure Mathematics and Applied Mathematics.
- Why do you want to participate in the Google Summer of Code? What do you hope to gain by doing so?
- Because it is a good opportunity to gain some experience about a real project, improve my skills, and learn to work with other developers. I think contributing to an open source software is interesting. After all, I always enjoy coding.
- Why are you choosing Octave?
- First, Octave is a useful tool for me. I will be very happy if I can do something for it and make it better. Second, I like mathematics and I am skilled in this. I have the ability to handle the project which requires mathematical knowledge. Third, I used Matlab for two years. I am good at m-file coding.
C: Contact
- Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave.
- Nick on IRC: calvocuno
- Nick on wiki and Savannah bug tracker: xierui
- Which time zone do you live in? Will that change over GSoC duration?
- My time zone is UTC+8 and it will 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 usually code around 1.00 to 4.00, 6.00 to 8.00, and 10.00 to 13.00, but it is flexible.
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 finished a course about C. I used Matlab for two years, and wrote m-scripts to do my course projects, including signal processing, numerical analysis, mathematical planning and some simulations of electrical engineering. I started to use Octave since January 2017.
- Please describe your experience with other programming languages.
- I can code with Java, Python and VHDL.
- 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.
- When I was taking the course Signals and Systems, I finished a project together with two students. Our project is about human face recognition and image restoration. It is implemented on Matlab. My work is image restoration algorithm, code integration and the GUI part. It took us about one month to finish it. This experience has improved my programming skills, and I learned how to work with other people to accomplish a big project. We were very happy when we finally did it, and we have been good friends since then.
- Please state the commits and patches you already contributed to Octave.
- Patch #9282 New function minres.
F: Feeling fine
- Please describe (in short) your experience with the following tools:
- IRC and mailing lists
- I use mailing lists to contact with mentors, and I am comfortable with using IRC as well.
- Mercurial or other source code management systems
- I started to use Mercurial, but I am not familiar with it now.
- Mediawiki or other wiki software
- I am learning to use it.
- make, gcc, gdb or other development tools
- I have not used them.
- IRC and mailing lists
- What will make you actively stay in our community after this GSoC is over?
- If I make some friends during the GSoC, then I will actively stay in the community after that.
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 took a course on Coursera in January 2017. That is Andrew Ng's Machine Learning. He recommended Octave as a tool to do the exercises, so I started to use Octave. I was amazed to find that Octave is useful and convenient. Tsinghua University provides Matlab for students, and I can use it for academic purposes when I am not on a vacation. However, I think I will switch to Octave in the future, because it is open source.
- If so, when and where? How far have you been involved already?
- What was the first question concerning Octave you could not find an answer to rather quickly?
- How can I apply a patch and what should it be applied to?
P: Prerequisites
- Please state the operating system you work with.
- Windows 8.
- Please estimate an average time per day you will be able to access
- an internet connection
- 24 hours.
- a computer
- 24 hours.
- a computer with your progressing work on
- 24 hours.
- an internet connection
- Please describe the degree to which you can install new software on computers you have access to.
- I can install any new software.
S: Self-assessment
- Please describe how useful criticism looks from your point of view as committing student.
- I think useful criticism should be constructive. It should either point out the weakness, or propose a better method. I am very happy to receive useful criticism, because it shows that someone is interested in my work, and the work may be useful after improvement. I am also grateful for useful criticism. Without criticism it is difficult to improve my work.
- How autonomous are you when developing:
- When developing, I mainly base on my ideas, but I will not hesitate about seeking help and suggestion from others when necessary. I welcome constructive criticism. I will think about them carefully and modify my work.
- Do you like to discuss changes intensively and not start coding until you know what you want to do?
- Before coding, I will figure out what I want to do, but it need not to be in detail. I think I will have a better comprehension after a bit of coding, and find out some problems that are hard to know at the beginning. After that, I will decide whether rewrite it or improve it. Discussion is important during the whole period.
- 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?
- If I have evidence that it is probably a good idea, then I will code it. I am not worried about the risk, because I think reasonable attempt contributes to the project in a way.
Y: Your task
- Did you select a task from our list of proposals and ideas?
- Yes.
- 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.
- I chose the project "Improve iterative methods for sparse linear systems". It is not a new project. Cristiano Dorigo did part of it in SOCIS2016. He improved pcg, gmres, bicg, bicgstab, cgs, and added tfqmr. The two functions pcr and qmr still need improvement, and minres, symmlq, bicgstabl, lsqr need to be added. I will mainly focus on adding the new functions. Meanwhile I will test Cristiano Dorigo's code and improve all the functions in the way he did.
- Please provide a rough estimated timeline for your work on the task.
- Community Bonding (May 5 - May 25)
- Learning more about the organization’s community.
- Read the references.
- Test Cristiano Dorigo's code and understand it.
- Week 1-2 (May 26 - Jun 11)
- Non-coding time for final exams. I do not know the exact time now, but it takes about two weeks.
- Week 3-4 (Jun 12 - Jun 26)
- Add mires and symmlq. Test them.
- Evaluation (Jun 27 - Jun 30)
- Week 6-7 (Jul 1 - Jul 12)
- Add bicgstabl and test it.
- Week 8-9 (Jul 13 - Jul 24)
- Add lsqr and test it.
- Evaluation (Jul 25 - Jul 28)
- Week 10 (Jul 29 - Aug 5)
- Improve pcr.
- Week 11 (Aug 6 - Aug 13)
- Improve qmr.
- Week 12-13 (Aug 14 - Aug 29)
- Revise and submit code.
- Final evaluation (Aug 22 - Aug 29).
- Community Bonding (May 5 - May 25)