GSoC 2017 Application Vedarth Sharma : Rewriting the Matrices module to make matrices in Sympy faster and more usable. - sympy/sympy GitHub Wiki

Details

Name: Vedarth Sharma

Age: 19

University: LNM Institute of Information Technology, Jaipur (LNMIIT, Jaipur)

E-Mail: [email protected]

Github: https://github.com/Vedarth (@Vedarth)

IRC: @Vedarth (Gitter)

Time-Zone: IST (UTC +5:30)

About Me

I am Vedarth Sharma, pursuing my first year of Undergraduate (B.Tech) in Electronics and Electrical Engineering from LNM Institute of Information Technology, Jaipur. Technology always used to intrigue me, though formally I was first introduced with C in 10th standard. From then I have learned python,C++ and Java, but python is what I prefer the most when it comes to coding or programming. I am in love with Mathematics and Algorithms. I was a competitive programmer before. I have taken part in many online competitions and have bagged 2 bronze medals in Hackerrank. Also I have been working in python for more than half a year now and in the time being I have explored many libraries and worked on many projects. I had the opportunity to create: A Key logger Web-scrapper (using beautiful soup library)

I like python because of it's simplicity. It is loaded with features, yet it is so easy to work on. I feel python is a very efficient language for development. That is the reason why I switched from competitive programming to development. I am also familiar with git version control and have been using it for quite a sometime now. I have a great interest in learning new things.

Platform Details

Operating System: Microsoft Windows 10 & Ubuntu 14.04 (Dual booted) Text-Editor: Sublime Text 3 & VIM (Because I like how powerful it is) Hardware: Intel Core i5 / 8 GB RAM Contributions & Issues Raised I have raised few issues in github as well as mailing list. I have made following contributions to Sympy: https://github.com/sympy/sympy/pull/12393 (PR) (Merged) https://github.com/sympy/sympy/pull/12428 (PR) (Merged) https://github.com/sympy/sympy/issues/12185 (My issue) (Closed) https://github.com/sympy/sympy/issues/12300 (My participation in discussion)(closed)

I believe in efficiency and hard work. I complete what I start no matter how much time or effort it takes. I made 18 commits in my last Pull request, ensuring that whatever I do should be as good and quick as it can possibly. I must say I love this environment. I have literally fallen in love with opensource for some people it might be work. But for me it has become a very integral part of my life. I spend almost 10 hours a day either studying git, sympy, contributing to sympy or sharpening my python skills. In my programming life my mind got blown only twice. First time it happened was when I was introduced to python. The only language I knew before python was C. I fell in love with python. The second time my mind got blown was when I first used sympy. When I was a competitive programmer, and unaware of sympy, symbolic mathematics was like a dream for me. In competitive programming you need to visualize stuff which makes things even harder to understand. And even harder to explain. With symbolic mathematics, people can visualize problems. Which is great for teaching and understanding.

Idea

What I want to do is rewrite Matrices module in Sympy and apply better algorithms in Matrices module and on the modules from where the files are importing from. Make it more organized. Clean the code up. Right now Matrices is full code. Even the tests are mathematically flawed. I also intend to add someC in evaluation of Matrices to give the expected answer when someone tries to find sum of all elements of a matrix. Allow Matrix to use the polys ground types, and separate the internal data (sparse vs. dense) from the Matrix interface. The goal is to make the matrices in Sympy much faster and more modular than they are now. And also make sure that they work the way they are supposed to. So main goal of the project is to organize Matrix module and mathematically ensure that the module is giving the correct and expected results. I have studied about matrices in college.I am familiar with following topics:- Elementary operations, Row reduced echelon form, Rank of matrix, Special matrices, Matrix inversion, Determinant, and properties ,System of linear equations and equivalent systems. -David C. Lay, Linear Algebra and it's applications. I have sufficient amount of knowledge about matrices and algorithms and their implementation in python. My primary goal is reorganizing the module and make it more orthogonal. Present to May 4 I will understand working of the Matrix module. My goal is to fully understand the code base during this time as well as look for issues as a user. I will also look at polys module, which is organized properly. Community bonding period I will start interacting with community and understand how does the organization really work. I will also start rewriting the Matrix module, make it more organized. Separate sparse from dense. Solve issues that need new algorithms to be implemented. The Main Period: 12 weeks total Complete the rewriting and organizing part in 6 weeks. Of course that means 1/6 th of the total code every week. Next 4 weeks will be dedicated to implement new algorithms so that matrices becomes more usable and faster. Implement an algorithm to calculate sum of elements of identity matrices correctly. Fix the matrix's issue of assuming that a diagonal matrix and implementing an algorithm to solve the issue. Next 2 weeks Debugging period/ review period/ Buffer period.