= Public application template =
This part is answered in public on your '''[[Special:MyPage|user page]]'''. Please copy its source
('''edit''' tab) and then fill. Delete any examples and annotations afterwards. Same for questions that do not apply to your situation.
== A: An introduction ==
== C: Contact ==
* Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave.
''We really want unique nicks. You might want to bold it.''
* Which time zone do you live in? Will that change over GSoC duration?
''Perhaps DST adjustment or a relocation. Note that both UTC and GMT are not aware of daylight saving time! Please state UTC+x or -x.''
** UTC+5.5 (Indian Standard Time)
* Please state the timeframe (in UTC+0) when you feel most comfortable working during GSoC. Where are your time buffers?
''Example: I usually code around 9.00 to 18.00 and could also try to start earlier (~7.00) for few days ;-)''
** Usually between 03:00 to 13:00, but could go up to 04:30 or even later (UTC)
** Bash Scripting: As I am an Ubuntu user, Bash scripting is an invaluable tool for making my life easier. From renaming files to executing complicated commands repeatedly to the trusty /configure /make /make install, bash scripting lets me automate many tedious jobs.
** ASP.NET programming: I have worked on creating forms on the web as part of data collection in a Data Analytics internship in Deloitte.
* Please describe your experience with being in a development team.
''Do you have experience working with open source or free projects?''
** While I have no experience in open source or free projects, I have been a part of a local startup (AliveHome), as an IoT firmware developer for 2 months. I also have a similar 2 month internship with Deloitte Mumbai, where I worked as a data analyst. Finally, I have a couple of projects which I have created as a part of a group project, spanning a semester (4 months).
* 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.
** There are 2 projects I can recall, one in Octave and one in C. The Octave one, a recreation of the Genetic Algorithm Function to satisfy my needs, is up at my GitHub account. It was completely created by me, originally as a research into whether speeding up the convergence of crossover improves the overall efficiency. It has thereafter been refactored into a matlab compliant, highly responsive code with a comprehensive error checking piece. The C cod was a project to recreate the DES algorithm in C. It was about 300 - 400 lines long, completely written by me.
* Please state the commits and patches you already contributed to Octave.
''This question (one of the most important parts by the way) is the only part of your application our wiki admins will edit for you even after the application deadline. Code sometimes speaks louder than many words do.''
** Nothing yet.
== 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
** Very little
** Mercurial or other source code management systems
** I have used GitHub quite frequently. I have used SVN on a much lower scale.
** Mediawiki or other wiki software
** make, gcc, gdb or other development tools
** I have used each of these a lot. Being a Ubuntu user, I have often complied from source. Gcc is currently the only compiler I use for C and C++ development. I have use Gdb much less (comparatively), as I usually make do with debugging using print statements.* What will make you actively stay in our community after this GSoC is over?
''You can also tell us after applications close and we'll happily try to fulfill :-)''
** I plan to use Octave quite frequently even after GSoC, mainly due to it being open source and free (as in free beer :P). Other than that, I am quite unhappy with its GUI, and if I was more accustomed to working on GUI, I would have opted to work on it. Basically, Matlab has more interactive toolbars. For example, the fuzzy logic toolkit in Matlab can be easily configured by click, while in Octave, I have to use long winded commands for the same.
** If so, when and where? How far have you been involved already?
** In my second year, when I was taking Andrew NG's course on Machine Learning on Coursera. As already mentioned, I have created a [https://github.com/richukuttan/Genetic-Algo Genetic Algorithm] function with it. I use it regularly to create Soft Computing and Machine Learning algorithms, along with Control Theory solutions.
* What was the first question concerning Octave you could not find an answer to rather quickly?
''Of course more than one question can be stated. We try to improve based on this each year! Includes learning how to use it, code, website, GSoC application, …''** How to use Back Propagation Neural Networks on Octave.
== P: Prerequisites ==
* 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 like to think about the code intensively before starting. However, an overview is acceptable as far as discussion is concerned.
** 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 have rarely coded on projects where the only options are accepted code or "thrown out" code. Usually, I prefer cucles of coding and feedback, as the code starts resembling what the original proponent has in mind. If that is impossible, it depends on the length of the code. If it is a comprehensive project, or one where the execution time is measurable in days, I prefer a proof of concept. Else, I prefer to start working right away.
== Y: Your task ==
** 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. ''Please also wiki-link the page for your elaborated proposal here.''
** Yes, I have chosen [http://wiki.octave.org/Summer_of_Code_Project_Ideas#Neural_Networks_package:_Convolutional_Neural_Networks Convolutional Neural Networks] as my project. I will be focusing primarily on the basic implementation of the toolbox, and the Python interface. I know I can handle the basic implementation. I find using TensorFlow in Octave a challenging idea. The Python Interface, however, will be new for me, however equally challenging. I have some experience in parallellizing code in Octave using pararrayfun and parcellfun. However, since in my experience, Matlab has different parallelizing functions, I am unsure as to maintaining Matlab compliance while ensuring parallelization.
* 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"). If possible, include two or three milestones you expect.''** May 30 to June 25: Learn how to interface Python and/or C++ with octave, and how to therefore use the interfaces to call Google TensorFlow from Octave.
** June 30 to July 15: Basic toolbox, with full functionality, including the porting of TensorFlow to Octave, and the use of the same to create a basic CNN.
** July 15 to July 23: Unavailable.
** July 28 to August 20: Creating Example codes, help files and other documentation as necessary.
[[Category: Summer of Code]]