User:Mithil: Difference between revisions

From Octave
Jump to navigation Jump to search
Line 19: Line 19:
*** This is my first GSoC experience.
*** This is my first GSoC experience.
* Why are you choosing Octave?
* Why are you choosing Octave?
**I opted for Octave because it overlaps with my interest areas. I have excellent Computer Science and Mathematical background which inclines me towards Octave. Also, I have worked on Octave for a while, it'd be a great opportunity to contribute and give it back to Open Source Community.
**I opted for Octave because it overlaps with my area of interest. I have excellent Computer Science and Mathematical background which is the primary reason to opt Octave. Moreover, I have worked on Octave for a while. Hence it'd be a great opportunity to contribute to the Open Source Community.

== C: Contact ==
== C: Contact ==

Latest revision as of 07:41, 3 April 2017

Public application template[edit]

This part is answered in public on your user page. Please copy its source (edit tab) and then fill. Delete any examples and annotations (this markup) afterwards. Same for questions that do not apply to your situation.

A: An introduction[edit]

  • Please describe yourself in three sentences, one of them regarding your current studies.
    • I'm Mithil Kumar, a third-year Computer Science Undergraduate student at Indian Institute of Technology Madras (IIT-M). I'm a quick learner, hard worker and always eager to learn something new.
    • Which languages do you speak?
      • I'm well versed in English, Hindi, and Gujarati. I can also speak and understand a bit of german.
    • What's your overall background? The general field you work in or are studying, e.g. computer science, physics, artificial intelligence, control theory...
      • I'm a third-year Computer Science undergraduate student at Indian Institute of Technology Madras.
      • Following are a few of the many courses I have taken as a part of my undergraduate curriculum:
        • Data Structures and Algorithms
        • Advanced Algorithms
        • Discrete Mathematics
        • Graph theory
  • Why do you want to participate in the Google Summer of Code? What do you hope to gain by doing so?
    • I think Google Summer of Code is a great opportunity to learn about Open Source community and apply some concepts learned during the curriculum, in practice. It'd be a great headstart to my professional career. I hope to gain professional and practical experience.
    • Please also describe your previous experience with the GSoC, if any. Includes any community-bonding, mentor experience or application, not necessarily accepted. We use this subquestion to identify which students are unfamiliar with how the program goes, providing further support. It has no negative impact on your rating!
      • This is my first GSoC experience.
  • Why are you choosing Octave?
    • I opted for Octave because it overlaps with my area of interest. I have excellent Computer Science and Mathematical background which is the primary reason to opt Octave. Moreover, I have worked on Octave for a while. Hence it'd be a great opportunity to contribute to the Open Source Community.

C: Contact[edit]

  • 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.
    • IRC : Mithil
    • Savannah :Mithil
    • Wiki : Mithil
    • Nabble : Mithil
  • 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.
    • My time zone is UTC + 5:30. No, it'll not change during GSoC.
  • 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 ;-)
    • I can work around 13.00 to 21.00 (in UTC + 0) but it would be flexible.

E: Coding experience[edit]

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.
    • C++: I have 2-3 years of experience with C++ and I'm well aware of the Object Oriented concepts of C++.
    • Octave or Matlab: I started using Octave during my last summer research and then continued using it for Andrew NG's Machine Learning course (MOOC). I have been actively following the octave code base and thus I have a pretty decent grasp over m-scripts.
    • OpenGL and Qt: I have no prior experience in both of them but I'm eager to learn about them if necessary.
  • Please describe your experience with other programming languages.
    • C:I have over 4 years of experience in C which I picked during my school days and continued in college.
    • Python: I'm well versed in Python. I have worked on a number of Python projects.
    • Java: I can also write well-structured modular code in Java, which was a part of college curriculum.
  • Please describe your experience with being in a development team. Do you have experience working with open source or free projects?
    • I have been a part of my Institute startup where I was a part of Frontend development team. I have no prior experience with Open Source or free project but I'd love to start by contributing to Octave.
  • 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.
    • Currently, I'm working on my curriculum project which manages and monitors a number of systems connected via the same network. It is a client-server Web Application. I have worked on client side data extracting part and soon I'll shift to backend team. Here is some of my documented work: [1]
  • 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.
    • I have contributed to the Mapping package. [2][3]

F: Feeling fine[edit]

  • 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'm comfortable using both IRC and mailing list.
    • Mercurial or other source code management systems
      • I started using Mercurial for Octave and I'm comfortable with basics of it. I can also work on git.
    • Mediawiki or other wiki software
      • I'm learning to use wiki softwares.
    • make, gcc, gdb or other development tools
      • I'm confident in using make, gcc and gdb compiler. I have also used pybuilder.
  • 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 :-)
    • My insatiable love for programming will continue to push me to contribute to the Octave Community. I can help in Convolutional Neural Networks (CNNs) package and Mapping package, which I'd do regardless of my GSoC selection.

O: Only out of interest[edit]

  • Did you ever hear about Octave before?
    • Yes, I have heard of Octave before.
    • If so, when and where? How far have you been involved already?
      • I have extensively used Octave over the past year, beginning with my Summer Research Intern at Purdue University, followed by assignments in Andrew NG's Machine Learning Course.
  • What was the first question concerning Octave you could not find an answer to rather quickly? Of course, ore 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, …
    • I had a hard time to find "Building guidelines" for Octave. It'd be great to put the contents of "HACKING" file to a web page.

P: Prerequisites[edit]

  • Please state the operating system you work with.
    • GNU-Linux
  • 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
  • Please describe the degree to which you can install new software on computers you have access to.
    • I have complete administrator access.

S: Self-assessment[edit]

  • Please describe how useful criticism looks from your point of view as committing student.
    • I'm open to all useful and constructive criticism. It helps me self-evaluate myself and it is pivotal for a good product development.
  • How autonomous are you when developing:
    • I tend to code based on my approach to the problem, I try to figure out the bugs or inefficiencies (If any) for a while. If I don't find any solution then I don't hesitate to ask for a help. I also ask for suggestions after completing my code.
    • Do you like to discuss changes intensively and not start coding until you know what you want to do?
      • Yes, I prefer to discuss the approach intensively before coding. I think it is more suitable to write bug-free code at once and it also eliminates the some of the inefficiencies involved.
    • 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?
      • Yes, I like to code a proof of concept. I'd take the risk of having work thrown away, at least it'd tell us whether the risk was worth taking or not.

Y: Your task[edit]

  • Did you select a task from our list of proposals and ideas?
    • Yes, I have selected a task from the list of proposals.
    • 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.
      • I chose the project "Improve logm,sqrtm and funm" [4]. I'd like to focus on the algorithmic part where we would discuss the inefficiencies involved in the current implementation and come up with new efficient ways to complete the task. I'm reading about different methods / Algorithms involved in Matrix exponential functions.After that, I'd shift to implementation of the required functions.
  • 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.
    • Community Bonding Period ( 4th May - 30th May)
      • 1st Week: Understanding the code base and reading about the research work going on in the relevant area.
      • 2nd Week: Discussing possible areas of improvement with the mentors. Getting an abstract idea about the implementation.
      • 3rd Week: Proposing new functions which could be included, study about them and constantly review ideas with mentors.
      • 4th Week: Fixating on the proposed upgrades and schedule.
    • Phase I ( 1st June - 30th June)
      • 1st Week: Profile the present code of expm, sqrtm and logm. Implement efficient algorithms as m script functions (if any).
      • 2nd Week: Change possible functions to equivalent C++ functions.
      • 3rd Week: Review the work done and consult mentors for suggestions.
      • 4th Week: Work on suggestions and then wind up the Phase I. Start preparing for the Phase II.
    • Phase II ( 1st July - 28th July)
      • 1st Week: Confer about the new functions which could be added and then implement them.
      • 2nd Week: Profile the code to identify weak sections and then improvise accordingly.
      • 3rd Week: Review Phase II.
      • 4th Week: Work on suggestions and look back through Phase I and Phase II.
    • Phase III ( 29th July - 29th August)
      • 1st Week: Complete pending work ( if any ).
      • 2nd Week: Identify bugs and documenting the project.
      • 3rd Week: Get feedback and finalize the Submission.
      • 4th Week: Wait for Evaluation :)