GSoC 2017 Application Mariah Akinbi: Autolev Parser - sympy/sympy GitHub Wiki

“Classical Mechanics: Autolev Parser”

Mariah the Person

Mariah Bukola Akinbi

University of Cincinnati

Bio: I earned a B.A. in Chemistry from the University of North Carolina at Chapel Hill in 2015, but currently pursuing computer science.

Contact: [email protected] / @mariah-akinbi

Mariah the Programmer

What platform do you use to code? What editor do you prefer and why? I’m currently running MacOS on a MacBook Pro. Right now I am using Atom and I really like the autocomplete feature.

What is your experience programming? Tell us about something you have created. I’ve taken 2 programming classes at UNC and am in a python programming class now at UC. I’ve created AI bots that parse words from Shakespeare and Donald Trump using a bigram word model. The bot generated tweets from a successor table and were compared in order to determine who has the best words.

What is your experience with Python? What are your favorite features of Python that are lacking in most other common programming languages? What, in your opinion, is the most advanced Python language feature or standard library functionality that you have used? I have taken an intro to programming class in python at UNC. I’ve gone through Codecademy’s python course and am also in a python programming course at the university of Cincinnati. I’ve written many programs in python ranging from twitter bots to a The Game of Hog simulation. I really like the functional programming aspect of Python such as list comprehensions with lambda, map, reduce and filter! They are short, sweet make for simple and clean code.

What is your favorite feature of SymPy? Demonstrate it here with a cool example. Parsing! This makes the library more versatile and ultimately more dynamic.

PARSING EXAMPLE

Have you ever used git or another version control system? Yes, I used git for a hackathon in February.

Me and My Project

What do you want to achieve? I hope to be able to both develop the skills I already have and to learn and grow new skills. I hope to be challenged, enlightened, and also encouraged throughout the summer.

What excites you about this project? Why did you choose it? I chose those project because it incorporates Python and Git, which I have, experience with, but also incorporates a bit of other things that I can learn and pick up new skills. I am excited to work with Sympy on this project because Sympy is open-source and it is extremely lightweight which makes it easier for others to take advantage of all of its features.

What qualifications do you have to implement your idea? For example, if you are implementing solvers for partial differential equations, what courses have you taken or books have you read on PDEs? Why are you suited to work on this project? I am currently in a python programming course at my university. I’ve also taken linear algebra and discrete mathematics. I am suited for this project especially because I am a beginner and am willing to learn any and all necessary technologies to see this project come to fruition.

What have other people done on this idea? Has it been implemented before? (hint: it probably has) Are there any papers or blog posts about it? There are other parsers out there. Here are a few: Pythonica

Maple

Code Generation

FortranForm

F90nml

Fortpy

PyCParser

Pythonica

Pyleri – can export to Javascript

YACC

f77toM.pl - Fortran to Matlab parser

How much time do you plan to invest in the project before, during, and after the Summer of Code? (we expect full time 40h/week during GSoC, but better make this explicit) If you plan to take any vacations over the summer, let us know about it here. I will be taking a vacation June 1 – June 4th. I plan to invest 40 hours/week during GSoC and I’m looking forward to it!

Please provide a schedule of how this time will be spent on sub-tasks of the project over the period of the summer. While this is only preliminary, we will use it to help monitor your progress throughout the program. Also understand that during the project you will issue weekly progress reports against that plan on your blog.

Month 0: Community bonding

Month 1 Learn

Week 1: Find differences between Autolev and Sympy

Week 2: Find the top 3 parsers that meet the need

Week 3: Lay foundation for structure of the parsing trees

Week 4: Phase 1 Eval

Month 2 Parse

Week 5: Create stand-alone parser

Week 6: Create stand-alone parser

Week 7: Create stand-alone parser

Week 8: Phase 2 Eval Stand-alone parser is complete

Month 3: Integrate

Week 9: Merge stand-alone parser into sympy

Week 10: Create automatic generation of documentation

Week 11: Create automatic generation of documentation

Week 12: Final Eval

In planning your project, it is good to note where along the way you could formulate a pull request. These would be points where you can have a self contained and well documented and tested piece of functionality. Doing this at several points during the summer helps to keep branch merges reasonable and code reviews manageable. A big code dump at the end of the summer will likely be hard to review and merge before the project deadline.

July 28: Pull request of parser

August 15: Pull request of Final Project

Please do not verbatim copy text from the ideas page, or from other people's discussions about your project, but rewrite it in your own words. If you include any significant text or code from another source in your application, it must be accompanied with a proper citation. All papers or references that you use or plan to use must also be cited. Put all this in a "References" section at the bottom of your application. The idea is to create a parser that will translate Autolev code to Sympy. This project could be expanded to include more languages and more extensive Mathematica and maxima parsing. The project could also include a machine-learning program that automatically generates natural-language documentation (comments) about what the program or the input is doing/calling for. It would be incorporating the research done by Nahla Abid, Natalia Dragan, Michael Collard, Jonathan Maletic of Kent State University and the University of Akron.1

References

  1. Abid, Nahla, Dragan, Natalia, Collard, Michael, and Maletic, Jonathan. “Using Stereotypes in the Automatic Generation of Natural Language Documentation for C++ Methods.” Sept. 2015. Web.