GSoC 2016 Application Vic Luo: Port SymPy's new Assumtions to SymEngine and improve its performance - wrat/sympy GitHub Wiki
##Personal Information Name: Zheng Luo/Vic Luo
Github username: htfy96
University: Shanghai Jiaotong University
Email: [email protected]
Timezone: GMT +8
Github: htfy96
I am a second-year university student majoring in Computer Science. The first line of my code was written in 2009. and I have spent lots of time on algorithms and coding since then. Now I work in a school laboratory that focuses on paper citation/coauthor network.
##Programming ###Platform and Editor In most cases I work in Arch Linux and Vim is my second-to-none choice when writing C++ programs, because C++ don't have very long method names or well-structured syntax like Java, therefore IDEs could only play a limited role in assisting coding. But I have to admit that when refactoring code, IDEs, such as CLion, tend to be more powerful than Vim+Plugins, while Vim wins in its keybindings and simplicity.
###Experience From 2009 to 2013, I took part in various programming competitions using Pascal, and ranked 18th in my province among 200+ competitors. Then, in 2014, I switched to C++/Python and implemented several programs:
https://github.com/htfy96/network_algo
C++ network computationhttps://github.com/htfy96/htscheme
A tiny Scheme interpreter written in C++https://github.com/htfy96/nanoSearcher
A simple search engine based on PyLucene
My favorite feature of Python is its explicitness - unlike Ruby whose philosophy is there are a lot of ways to do one thing, Python stands for there is only one way to do things like this, which is quite suitable for a scientific computation framework.
I have used git
for around two years and got quite familiar with version management as well as resolving conflicts.
##Project Proposal In this proposal I plan to port SynPy's new assumptions module to C++ in SymEngine. Also, I'm going to work on the improvement of algorithm.
###Qualification
- I learned Discrete Mathematics, Calculus, Linear Algebra in my first year and have a good understanding of propositional logic.
- My algorithm skills would also be helpful in implementing this module and speeding up the code. I took part in algorithm contests since 12 years old and had extensive experience in the application of algorithm.
- Before this I have contributed to several open-source projects as a C++ programmer, which could prove that my programming skills are qualified for this position.
###Previous work SymPy has just implemented a new assumptions module, which hasn't been ported to SymEngine yet. Additionally the wiki mentions that the performance could be improved through caching previous logic inference.
###Schedule My summer vacation is from Jun 20th to Sep 10th. I'm going to stay at school and work 40h/week during that time. Before that about 5~10 hours/week could be spent on this project.
Here is my schedule:
- Before June 20th:
Read code of
sympy.assumptions
and SymEngine - June 20th to July 20th:
Try to port
sympy.assumptions
as a submodule ofSymEngine
and test - July 20th to August 10th: Read books/papers about truth maintenance system as well as other related work
- August 10th to August 25th:
Improve
assumptions
's performance through techniques mentioned above - August 25th to September 10th: Testing, benchmarking and bug fix
###Contribution I reviewed some code in SymEngine and opened https://github.com/symengine/symengine/issues/839 to give some suggestions on code quality.
https://github.com/symengine/symengine/pull/844 , which includes some refactorization, was merged into the repository.