GSoC 2018 Application Amr Maghraby Improving Ruby Wrappers - sympy/sympy GitHub Wiki

Personal Details

Amr Ahmed Maghraby [email protected] Telephone: +20 121 0462 140 Country of Residence: Egypt Timezone: UTC+2

Project Proposal

I propose to work on improving the Ruby wrappers. By the end of the GSoC period, I should have implemented the missing wrappers and provided the wrappers for a different language (Java or R), including code documentation and unit testing. I’ll create a blog where I will post weekly about the accomplishments I made, issues I have faced and how I overcame them. By the end of GSoC, if there is enough time available, a flow control diagram will be provided in order to help future testers and developers.

I checked the code and the attached resources. I got an idea on how the environment is set up, what I need to learn and what needs to be implemented/improved.

Implementation Plan

The project is divided into four parts:

Completing the implementation of the ruby wrappers class Using attached materials in the description of the project and other materials I found on the internet in order to increase code modularity and clarity . Making implementation of wrapper classes in another language (Java or R) A wrapper for java or R. It will depend on the advice of my mentor and we should discuss which one among them will be of more benefit to the community. Documentation (code documentation and unit tests) After finishing this phase I will try to use CASE tools to make sure if any bugs are found. Blog I’ll create a blog where I will post weekly about the accomplishments I made, issues I have faced and how I overcame them.

If time will suffice I’ll create flow control diagrams to help future testers/developers find bugs and understand how the code works.

Timeline During this timeline every week I’ll publish a new blog post about issues that I faced and how I overcame them, and new things I’ve learned.

April 23 - May 14 (Community bonding period): during this period college will be in final exams. Most of my time will be for studying and the rest of my time I’ll research in depth the different approaches to implement Ruby wrappers, setup the development environment, study the existing code, and discuss the tricky bits. I’ll also get familiar with the currently existing partial Ruby wrappers, testing codes and discuss the overview for how the Ruby project and other languages should be implemented and documented.

Weeks 1 - 2 Continue reading from your project attached resources about Ruby C API and C wrappers.

Weeks 3 - 4 Wrap the feature/functions in C and write tests for the c wrappers.

Weeks 5 - 6 Write expected tests in Ruby with RSpec, specifying how do you want the feature/method to behave. Write the source for the wrappers in Ruby C API, and make the tests pass.

Weeks 7 - 8 Unit tests will be implemented, besides code documentation.

Weeks 9 - 10 Repeat the same process in week 3 - 4 with a different language (R or Java depending on a discussion with the mentor).

Weeks 11 - 12 Repeat the same process in week 5 - 6 with different language (R or Java depending on the discussion with mentor).

Code Sample

Registration system program made by me for my college in Java and MySQL its purpose is to support our college main system and help students to register their information .I created the GUI and designed the database. Project purpose was to contribute to my college system. https://github.com/AmrMaghraby/User_Registiration_System

One month ago , I did another side project which was a Check-in system for employees using GPS . Technologies i used are PHP, Google Maps API , HTML , CSS. Challenges faced me gaining access to Google maps API ( free access using gmail) , connecting to database phpmyadmin new version (using PHP defined function which provide connection to database by username and password) and find good support in college to verify and test it(actually he was a friend ) .

Here you can find some of my experience in competitive programming for 3 years during my college. https://github.com/AmrMaghraby/Competitve-Programming

Why Sympy?

During my college for about 3 years I did problem solving and competitive programming, the best challenges I faced were math problems, my skills in mathematics increased as I enjoyed each one of them. I believe my graduation project will depend heavily on mathematics among other fields. I think that the Sympy community is the best place to invest my hobby and what I have learned in competitive programming, it will also help improve my skills and gain experience.

Full-time?

Since we should start working on our projects on 20th of May, I’ll be working full-time. I will be done with my exams then!

Academic Experience

I’m a third year (out of four) undergraduate student in the Arab academy for science, maritime and technology in Alexandria. I’m pursuing a Bachelor’s degree in Computer Science . My GPA is currently 3.94, the third on my college class for three years.