GSoC 2016 Application Sanya Khurana:Implementation of multiple types of coordinate systems for vectors - wrat/sympy GitHub Wiki

Personal Information

Name: Sanya Khurana

Email: [email protected]

University: Indira Gandhi Delhi Technical University for Women

Github username: sanyagithub

Website : www.sanyakhurana.com

Country of residence: India

Timezone: IST (GMT +5:30)

Primary language: English

Short Bio

I am Sanya Khurana, currently pursuing Masters in Computer Science ( Second Year ). I completed my graduation in B.Sc(H) Computer Science from University of Delhi. I have experience in creating Android/iOS Applications and Web Applications. I am the Founder and Chapter Leader of Lean In India. "Lean In" is an organisation founded by Sheryl Sandberg, COO of Facebook which aims to empower women towards their ambitions. I am a mentor in "Learn IT, Girl" Organisation - A global mentor-ship program for women around the globe to learn a programming language of their choice. This is my first effort to contribution to an Open Source project as I am a newbie to Open source community.

Programming Experience

I am currently working on MAC OS and I use Sublime Text 2. I like working on Sublime Text 2 mainly because of its User Interface and functionalities. It is simpler to use than many other editors. I believe good UI is very important for a coder to work efficiently.

I started coding during my graduation, freshman year. I have created many Android and iOS Applications like Childhood Epilepsy Detection Tool, ( Android Version ), What would you do if you weren't afraid? and Im4Change . I also created a Student Feedback System for my Campus recently. I am currently working on a Mobile Application Girl-Gorithm that teaches basics of Algorithms and Data Structures to high-school girls to encourage Computer Science Adoption amongst girls. During my graduation I did some Mathematical courses like Calculus and Matrices, Calculus and Geometry and Differential Equations.

I started learning Python 6 months ago and simply fell in love with the language. Before python, I worked in Objective C, Java, C/C++, PHP, JavaScript and HTML. I like Python because of its easier syntax and shorter code ( compared to other languages I worked on ). The language is intuitive and easy to learn. It takes lesser time and code to create a functionality in Python. I was introduced to Sympy and Open Source at the same time and was thrilled to know that I can contribute to this Computer Algebra System. This is the first Open Source I have contributed to and it was a great learning experience already. I love all the features of Sympy but my favourite ones are : the printing module, plotting module and the vectors module.

>>> from sympy.plotting import plot3d

>>> x, y = symbols('x y')

>>> plot3d(x*y, (x, -5, 5), (y, -5, 5))

>>> from sympy import jscode, symbols, Rational, sin, ceiling, Abs

>>> x, tau = symbols("x, tau")

>>> jscode((2*tau)**Rational(7, 2))

'8*Math.sqrt(2)*Math.pow(tau, 7/2)'

>>> jscode(sin(x), assign_to="s")

's = Math.sin(x);'

Contribution to Sympy

(Issue) sympify evaluates Div Operation in case of Unary Operator when evaluate = False

(Merged) Fixes Issue #10773 and #10560

(Closed) Fixing sympify (evaluate = False) for Unary Operators - Issue #10560

(Unmerged) Fixed Issue UserWarning plot3d #10612

Project

Idea

Sympy currently implements only Cartesian Coordinate System. The ideas of this project is to change the vector class such that it has the base class - CoordinateSystem and subclasses - CartesianCoordinateSystem, SphericalCoordinateSystem and CylindricalCoordinateSystem along with the functionality of each Coordinate System

Timeline

Community Bonding Period

I will use this time to revise my Mathematical Skills and prepare a more detailed schedule. I will use this time for investigation. I will not be able to contribute much ( as far as coding is concerned ) because of my University Semester Exams during that time.

23rd May - 20th June

Basic Implementation and Functionality

  • Change the current Vector Class
  • Implement classes - SphericalCoordinateSystem, CylindricalCoordinateSystem
  • Implement functionality for each class

20th June - 11 July

Test and Documentation

  • Write tests and documentation for all the work implemented.

11 July - 15th August

Vector Integration

  • Implement Vector Integration Module for each class.
  • Implement function to convert from one Coordinate System to another

15th August - 23rd August

Finalizing the Code

  • Fixing bugs
  • Writing rigorous tests
  • Finalizing documentation

References

https://en.wikipedia.org/wiki/Spherical_coordinate_system http://tutorial.math.lamar.edu/Classes/CalcIII/SphericalCoords.aspx https://en.wikipedia.org/wiki/Cylindrical_coordinate_system http://www.geom.uiuc.edu/docs/reference/CRC-formulas/node42.html http://tutorial.math.lamar.edu/Classes/CalcIII/CylindricalCoords.aspx https://www.youtube.com/watch?v=83hYvym9X1E&list=PL576C313B98C1419E&index=22