A: An introduction
- Please describe yourself in three sentences, one of them regarding your current studies.
My name is Nikita Gordiienko, at the moment I’m studying Engineering at National Technical University of Ukraine "Igor Sikorsky Kyiv Polytechnic Institute" (NTUU "KPI"). I am first-year student and speak Ukrainian, Russian, and English. My background includes Advanced Mathematics, Linear Algebra, Computer Logic, Linux Administration, C language, Computer Science, and Machine Learning. I have experience of programming in C (Visual Studio + command line), R (RStudio), Octave under Linux and Windows.
- Why do you want to participate in the Google Summer of Code? What do you hope to gain by doing so?
This is the first time I participate at GSoC. I believe that it is a great chance to apply all already gained skills in order to solve the real problem and consequently help the community and become a part of it. In addition, learning unknown for me technologies and pieces of advice from the maintainers of Octave would give me many unique skills. So gained during GSoC working experience would help me to become a specialist in this area of studies.
- Why are you choosing Octave?
I became a user of Octave due to the Machine Learning online course provided by Stanford University (by Prof.Ng). The Octave project proposes to integrate knowledge of machine learning with programming. Finally, I found the possibility to interact and work with the contributors and creators of Octave pretty exciting. I hope they will share their great experience with me.
- Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave.
IRC nick: 1besser1 Email: email@example.com
- Which time zone do you live in? Will that change over GSoC duration?
My time zone is Eastern European Summer Time (EEST) +0300 UTC 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 am flexible but expect to work from 8:00 to 12:00 and from 16:00 to 21:00. I could code also around 12:00 to 15:00 for few days.
E: Coding experience
- Please describe your experience with C++, Octave or Matlab m-scripts, OpenGL and Qt.
I have used Octave scripts since my enrollment in Machine Learning course on the Coursera and Linear Algebra course at my university NTUU "KPI" in Ukraine. In Machine Learning course I needed to implement different learning algorithms as m-scripts and in Linear Algebra I checked all my solutions using Octave.
I have medium working experience with C++ and only started participating in projects as a C/C++ developer. At the moment I am working on the Internet of Things (IoT) project based on the Spark/Particle and Arduino microchips with several students from my university.
I have read documentations about OpenGl and Qt, but have no practical experience.
- Please describe your experience with other programming languages.
I have done my R&D project with R (using Rstudio), which was awarded as 2016 Google Science Fair Regional finalist by Google and INTEl-ISEF award for advanced computer science project by INTEL.
- Please describe your experience with being in a development team.
At the moment I am working with several students from my university as a team on the Internet of Things (IoT) project based on the Spark/Particel and Arduino microchips.
- 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 was my research work, which was published in 2 scientific publications and presented at different science fairs (like 2016 Google Science Fair). I asked my friend to help with developing a simple Android application to collect acceleration data from smartphone and then wrote all my code with R in order to analyze the data using different statistical methods like distribution moment analysis and cluster analysis. The main goal of the project was to find some correlations between data and actual human fatigue. So, during the project my role was shifted from soft developer to statistical analyst. In a result, we learned how to work with statistical languages and efficiently analyze a big amount of data. Also, this project improved my programming and teamworking skills.
- Please state the commits and patches you already contributed to Octave.
At the moment I did not contribute, but I hope, I will start contributing to Octave this spring.
F: Feeling fine
- Please describe (in short) your experience with the following tools: We only use this question to determine where you need guidance, not for rating! We by no means expect you to be familiar with all of these and you'll won't necessarily need them while working with us.
- IRC and mailing lists
I use the mailing list to contact my mentors during the previous and current projects in order to ask for a piece of advice.
- 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
During my classes, we use several compilers (including gcc) and debuggers (including gdb).
- What will make you actively stay in our community after this GSoC is over?
I think that after participating in GSoC I would have a better understanding of Octave as a developer and would have some experience. I believe that this experience is crucial in starting generating my personal ideas, which I would implement. In addition, all gained skills would help me to find and fix some bugs more efficiently. In addition, I hope to find new colleagues and cooperate with them after GSoC close.
- Did you ever hear about Octave before?
I’ve used Octave during my online course on Machine Learning by Stanford.
- What was the first question concerning Octave you could not find an answer to rather quickly?
How it is compared with MATLAB in relation to tools and toolboxes dedicated to machine learning, and how it can be connected with the available machine learning frameworks like h2o, TensorFlow.
- Please state the operating system you work with.
Ubuntu 16.04, Windows 10, Windows 8
- 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, which works with Ubuntu or Windows.
- Please describe how useful criticism looks from your point of view as committing student.
From my previous and current team-work experience, I think the criticism is the most useful way to understand mistakes and disadvantages and provide the better and quicker feedback. I like being criticized because after it I can see what aspects I need to improve. However, compliments help me to understand that I am moving in the proper way.
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 “Neural Networks package: Convolutional Neural Networks”, because right now I learning basics of TensorFlow, which is installed on NVIDIA Tesla K40 GPGPU-card in my NTUU "KPI" university. The matter is I would like to continue my previous project dedicated to fatigue estimation by machine learning methods using TensorFlow and h2o. As a user, I was happy to use machine learning methods inside Octave, and now I clearly see the practical necessity of porting any machine learning methods and tools from open-source TensorFlow project to Octave. Of course, if it will not violate the license agreements. It would give me an oppotunity to look deaper and make my contribution to the Octave community.
- 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):
- 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
- have some practices in parallel computing using several PCs in order to perform task -
- deeper study of the existing documentation of Google's library TensorFlow
- select (with mentor) some basic functions from TensorFlow source files for start,
- port them to Octave and test,
- improve them on the basis of the mentor feedback for the better quality and performance
- select and port other functions
- test their performance in Octave,
- improve them on the basis of the feedback for the better quality
- final test and debugging