-
Notifications
You must be signed in to change notification settings - Fork 27
[RFC]: Implementing Symbolic Math in stdlib.js #130
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Thanks for working on this proposal, @Kavyansh-Bagdi. A few comments:
|
Thanks sir @gunjjoshi , for review and feedback!
For Implementation of Lexer/Tokenizer/AST Parser. I am thinking about using Top-Down parsing (Recursive Descent) and Operator Precedence as used in I’m considering this parsing technique because it is intuitive, readable, and well-suited for handling mathematical expressions, especially in a symbolic math context. To get a rough idea of the necessary functions and expected output structure, I’m referring to this Page.
Symbolic Math for JavaScript | Show Case Project I am still working on this and also considering submitting it as my showcase project by including functionalities from
Sorry for not mentioning this earlier. I plan to start working on the additional goals once I’ve completed the primary objectives of the project. I'm also open to continuing work on those additional goals even after the official timeline ends, if needed. Right now, my main focus is on meeting the requirements of the Symbolic Math issue. I don’t yet have a clear plan for the additional goals, but I’ll explore them as I move forward.
Yes, I plan to use SymPy’s test cases as a reference for both testing and benchmarking.
I initially assumed integration would take a week, but I agree it might be more complex. I’ll revisit the timeline and consider starting with basic rules before moving to more advanced cases. |
Full name
Kavyansh Bagdi
University status
Yes
University name
Malaviya National Institute of Technology, Jaipur
University program
Computer Science and Engineering
Expected graduation
July, 2027
Short biography
I am currently a second-year Computer Science student, learning programming through online resources. It has been two years since I formally started programming, and from the beginning, I have loved creating things that add value to others lives.
My interest in machine learning and backend development continues to push me forward, often leaving me amazed at how developers come up with innovative ideas and bring them to life.
Timezone
(GMT+05:30) Asia/Kolkata - IST
Contact details
email : [email protected] , github.com : Kavyansh-Bagdi
Platform
Linux
Editor
I prefer VS Code because it offers customizable key bindings, a wide range of extensions, and powerful debugging tools, making coding faster and more efficient for me. I also use the Nano editor for quick fixes.
Programming experience
JavaScript & NodeJS Experience
C/C++ & Fortan Experience
Python
During COVID-19, I built a basic application to automatically join my online school classes, eliminating the need to search for links or check the timetable. It was developed using the Pygame library, with Excel to store class links. Although Pygame wasn't the best choice for this, it was a valuable learning experience and my first project. (At the time, I didn't know about GitHub, so I can't share the code.)
JavaScript experience
Last summer, I started learning JavaScript using resources like YouTube and JavaScript.info. I built some basic projects to understand the language, such as a Spotify clone and a recreation of Conway's Game of Life.
At first, I appreciated that JavaScript didn’t have strict data types or indentation rules—it felt like a language that allowed you to go with the flow. However, I later realized that working within constraints can be helpful, which led me to switch to TypeScript.
While working with APIs, I was amazed by how the async/await functionality helped eliminate "callback hell." This was also my first introduction to asynchronous programming.
Node.js experience
I learned Node.js with JavaScript and developed the backend for my college's cultural festival website using the Express library and Firebase for both the database and authentication.
Currently, I am working on my semester project, where I am responsible for the backend development of a Crime Management System. For this project, I am using Next.js, the Shadcn UI library, and Tailwind CSS
C/Fortran experience
C was the first programming language that introduced me to low-level operations and how things work under the hood. I learned basic data structures in C and later switched to C++ for solving LeetCode problems, where I understood about object-oriented programming.
Note: I have no prior experience with Fortran, but I am willing to learn if required.
Interest in stdlib
I am interested in stdlib as I am currently studying Machine Learning in Python, working with libraries like SymPy, Matplotlib, and Pandas. Additionally, my experience with JavaScript and Node.js through previous projects aligns well with stdlib project Symbolic Math , making it a suitable choice for my first open-source contribution. The best part of open-source contribution is the feeling when your pull request gets merged and your piece of code will be used by so many people to build different things that we can't imagine.
Version control
Yes
Contributions to stdlib
stdlib showcase
In Progress
Goals
The goal of this project to implement symbolic mathematices in Javascript.
Primary Goals:
Additional Goals:
Why this project?
As a computer science student, I've always been curious about how developers build libraries and programming languages that power everything—from ordering a pizza to sending rovers to Mars. The endless possibilities that programming offers give individuals the tools to create whatever they imagine.
This project is a great opportunity for me to build something that developers can actually use, especially in JavaScript, one of the most widely used programming languages.
Also, since i am a interest in Math, I feel this project will help users write and manipulate math just as they would on paper, making it more intuitive and accessible.
Qualifications
I’ve gained hands-on experience with symbolic computation, particularly through working with libraries like SymPy in Python. On top of that, I’m quite comfortable with the JavaScript ecosystem, which has allowed me to integrate my knowledge of symbolic math into real-world projects. My academic background in Data Structures and Algorithms has also strengthened my problem-solving skills, giving me a solid foundation to tackle complex challenges.
Additionally, I’ve started diving into topics related to this project, such as building a Lexer and parser using JavaScript’s regular expressions (RegEx). This has given me valuable insight into tokenizing and parsing mathematical expressions, which will be crucial for developing symbolic computation tools.
Prior art
There are several references for this project, such as SymPy in Python, Math.js, and Nerdamer, which have already implemented symbolic math. Among these I think, SymPy stands out as the most comprehensive, widely used in Machine Learning and Artificial Intelligence, making it a reliable source of inspiration. However, its large library size, due to being purely written in Python, can be a limitation.
Commitment
I am willing to dedicate more than 35 hours per week. My college's summer vacation runs from mid-May to the last week of July, so I am fully available during June and July. Once my college reopens, I can commit to 20 hours per week.
During this period, I typically work from 8 PM to 1 AM IST ( 2:30 PM to 7:30 PM UTC ) but can adjust if needed. If there are any changes to my schedule, I will promptly inform the community. Additionally, I will provide weekly status reports to maintain transparency and integrity in the project.
Schedule
Assuming 12 weeks schedule.
[Mid Term Evaluation and Report]
[Final Evaluation]
[Post & Extended GSOC Period]
Notes:
Related issues
GSOC #25
Checklist
[RFC]:
and succinctly describes your proposal.The text was updated successfully, but these errors were encountered: