stdlib-js / google-summer-of-code

Google Summer of Code resources.
https://github.com/stdlib-js/stdlib
23 stars 5 forks source link

[RFC]: Symbolic Math Support for Enhancing Mathematical Capabilities #81

Closed Charlie-1-3 closed 2 months ago

Charlie-1-3 commented 3 months ago

Full name

Ayush Rai

University status

Yes

University name

IITBHU - Indian Institute of Technology (BHU) Varanasi

University program

Mathematics and Computational Sciences

Expected graduation

2025

Short biography

I am a Mathematics and Computational Sciences Undergraduate student at the Indian Institute of Technology Varanasi (BHU) pursuing a Dual Degree (Bachelor of Technology + Master of Technology) in my Fourth year. I was introduced to the world of programming and software development in my second year. Since then, I have explored various fields such as App Development, Data Structures and Algorithms, Computer Architecture, and Operating Systems. For most of my Educational journey, I have worked primarily on applied mathematics. As for my programming journey, I have worked on Mobile-based technologies C/C++, and Python programs, and I have recently been learning Machine Learning as well as Quantitative analysis. Apart from my coding background, I have a minor degree in Financial markets.

Timezone

UTC+5:30

Contact details

ayush.rai.mat20@itbhu.ac.in, github:Charlie-1-3, LinkedIn: https://www.linkedin.com/in/ayush-rai-0244341ba/

Platform

Windows

Editor

My preferred code editor is VS Code. I find its lightweight nature and extensive customization options to be very appealing. Additionally, the wide range of extensions available for different languages and tools makes it a versatile choice for various programming tasks.

Programming experience

Throughout my programming journey, I've utilized a range of tools, including Java, Python, XML, HTML, CSS, JavaScript, and the MERN stack. These technologies have enabled me to create a diverse array of projects, spanning from crafting an Option pricing model and dynamic Quiz application to developing a Chat application and interactive games. By leveraging React, I've focused on building user-friendly interfaces that facilitate seamless interactions. Furthermore, I've delved into backend development, utilizing MongoDB for efficient data storage and management. These projects exemplify my proficiency in applying contemporary web technologies to tackle real-world problems. They underscore my knack for crafting compelling and functional applications across various domains. A selection of these projects is available on GitHub, serving as a showcase of my programming skills and experiences.

JavaScript experience

I've worked extensively with JavaScript in a variety of projects, ranging from dynamic Quiz applications to automated payment verification and games. One aspect I find most fascinating about JavaScript is its extensive ecosystem of libraries and frameworks, offering endless possibilities for building innovative and dynamic web applications. However, I've encountered challenges with JavaScript's event-driven nature, particularly when managing complex event handling and ensuring smooth interaction between different components of a project.

Node.js experience

I've used Node.js extensively in backend development for projects like the newspaper app and note-taking app, where I've leveraged its capabilities for server-side logic, routing, and managing database interactions with frameworks like Express.js. Additionally, I've implemented advanced features such as real-time communication and task scheduling within Node.js applications.

C/Fortran experience

As a beginner, I've started learning the basics of C and Fortran through introductory projects and coursework. In C, I'm exploring fundamental programming concepts like variables, loops, and functions. Meanwhile, in Fortran, I'm getting acquainted with its syntax and core features, especially for numerical computation and scientific programming. Though I'm at the early stages, I'm eager to progress and apply these languages to future projects.

Interest in stdlib

I'm interested in stdlib's commitment to providing a comprehensive standard library for JavaScript. One of my favorite aspects is its clear documentation and robust API design, which streamline development. I appreciate stdlib's focus on maintaining backward compatibility and adherence to industry standards, ensuring stability for users. Overall, I'm excited about the opportunity to contribute to projects like the one you've proposed, which aim to enhance stdlib's capabilities and empower developers.

Version control

Yes

Contributions to stdlib

In progress

Goals

Abstract: The goal of this project is to enhance the JavaScript standard library (stdlib) by adding basic support for symbolic math operations. This includes functionalities such as solving equations, simplifying expressions, and utilizing mathematical functions symbolically. The project aims to empower JavaScript developers with tools to perform complex mathematical computations directly within their applications, eliminating the need for external libraries or custom implementations.

Project Description: The project will be divided into several key components to ensure a systematic and manageable approach:

Research and Planning: Begin with an in-depth exploration of existing symbolic math libraries and algorithms, identifying suitable approaches for implementation within the stdlib ecosystem. Establish a clear roadmap and timeline for the project, breaking down tasks into smaller, manageable sub-tasks.

Implementation of Core Functionalities: Start by implementing core functionalities such as parsing mathematical expressions, symbolic manipulation, and solving equations. Utilize established algorithms and mathematical concepts to ensure accuracy and efficiency.

Testing and Validation: Develop comprehensive test suites to validate the correctness and robustness of the implemented functionalities. Test cases should cover a wide range of scenarios to ensure the reliability of the symbolic math operations.

Documentation: Provide clear and detailed documentation for developers to understand how to use the new symbolic math functionalities within their JavaScript applications. Documentation should include examples, usage guidelines, and API references.

Integration with stdlib: Integrate the new symbolic math functionalities seamlessly into the stdlib ecosystem, ensuring compatibility with existing modules and adhering to stdlib's coding standards and best practices.

Community Engagement: Engage with the stdlib community through regular updates, discussions, and feedback sessions. Encourage community involvement in testing, documentation, and feature requests to ensure the successful adoption of the new symbolic math capabilities.

Why this project?

As a mathematics major in the tech field, the prospect of merging my passion for mathematics with my expertise in technology through the proposed project is highly exciting. Adding symbolic math support to the JavaScript standard library not only empowers developers with tools to tackle complex mathematical problems directly within their applications but also contributes to bridging the gap between theoretical mathematical concepts and practical software development. This project presents a unique opportunity to democratize access to mathematical tools, fostering learning opportunities for aspiring developers interested in STEM fields. Implementing symbolic math functionalities within the stdlib ecosystem is both challenging and rewarding, requiring a deep understanding of mathematical concepts and algorithms alongside proficiency in software development. Overall, I am eager to contribute to this project, as it aligns perfectly with my interests and aspirations, allowing me to make a tangible impact on the developer community.

Qualifications

As a software developer with a strong passion for mathematics, I bring a unique blend of technical expertise and mathematical knowledge to the proposed project. Through my academic background and professional experience, I have acquired a deep understanding of mathematical concepts and algorithms, including calculus, linear algebra, and discrete mathematics, which are essential for implementing symbolic math operations. Additionally, I have hands-on experience with JavaScript and Node.js, having worked on various software projects, which enables me to effectively integrate new functionalities into the stdlib ecosystem. I am committed to continuous learning and growth, and I am confident in my ability to execute on this project successfully, leveraging my skills and background to deliver high-quality results.

Prior art

The goals of adding symbolic math support to programming languages have been pursued before, notably in libraries like Python's SymPy. These libraries offer comprehensive tools for symbolic manipulation and equation solving. Numerous papers and blog posts discuss various aspects of symbolic math implementations, including expression parsing, manipulation algorithms, and equation solving methods. Additionally, other programming environments like Mathematica and MATLAB provide symbolic math capabilities. Leveraging existing implementations and resources from these libraries and academic sources, we can inform and guide the development of symbolic math support within the JavaScript standard library effectively.

Commitment

I am fully committed to investing approximately 15-20 hours per week into the project throughout the Google Summer of Code program. This includes dedicated time for research, planning, development, testing, documentation, and community engagement activities. I understand the importance of consistent and focused effort to ensure the successful completion of the project within the allocated timeframe.

Schedule

Related issues

No response

Checklist