I am a final year undergraduate in the department of Computer Science and Technology at Indian Institute of Technology, Jodhpur.
I have completed following relevant courses in my academic curriculum in past years: Computer Organization and Architecture, Theory of Computation, Operating Systems, Software Engineering, Object Oriented Analysis and Design, Data Structures and Algorithms, Design and Analysis of Algorithms.
Timezone
IST (UTC + 5:30)
Contact details
goswami.4@iitj.ac.in, goswamipranav11@gmail.com
Platform
Mac
Editor
I utilize Ubuntu 22.04 as my preferred operating system, coupled with the Visual Studio Code (VS Code) editor, while also having experience with Atom and PyCharm IDE.
Programming experience
I have strong background in Python 3.x, C++11, Dart and Javascript. I have explored Flutter, Django, ReactJS, REST-APIs as well as having some experience with HTML, CSS during my undergraduate studies. A list of my ongoing and completed work is as follows,
Compiling Legacy Minpack with LFortran - As a developer at LFortran 2022, I worked on fixing issues that were causing divergence in the output of LFortran compared to GFortran, implementing implicit typing, statement functions, and configuring CI tests for Minpack under the guidance of Ondrej Certik. In addition to these tasks, I also fixed various ASR to ASR pass related bugs and created minimal examples to aid in troubleshooting and debugging efforts. Overall, my contributions helped to enhance the reliability and accuracy of LFortran, bringing it closer in line with the performance of GFortran and ensuring that it remains a reliable and effective tool for users.
Optical Character Recognition Application - In this project, I successfully led a team of developers and implemented a pipeline that could extract text from images using Optical Character Recognition (OCR) technology and convert it to various formats such as .txt, .mp3, and .csv. This pipeline was then integrated into a mobile app, making it easy for users to extract text from images with just a few taps on their smartphone. The mobile application offers a simplified login process via Google authentication and allows user to upload images from their gallery or camera with just a few taps. To enhance accessibility, the app also includes a text-to-speech feature that converts the extracted text into an audio file, allowing users to listen to the text rather than reading it themselves.
Covid-19 Detection using chest X-Ray - The outbreak of COVID- 19 has led to a global health crisis, making early detection and diag- nosis crucial for disease control and management. Medical imaging, especially chest X-rays, has emerged as a potential tool for the early de- tection of COVID-19. In this study, we proposed a deep learning-based approach to detect COVID-19 using chest X-rays. Specifically, we em- ployed VGG-19, EfficientNet B3, ResNET-50 models, and performed in-depth analysis to detect COVID-19 infection using chest X-rays af- ter lung segmentation using U-Net and dimensionality reduction using PCA. Our approach achieved an accuracy of 96.4% on a pre-trained U-Net model after lung segmentation.
JavaScript experience
Javascript Development stdlib-js - While contributing to develop- ment of stdlib-js standard library for JavaScript and Node.js, I added javascript and C implementation to various special mathematical func- tions like erf, erfinv, acos, asin, log, etc. Refactored and implemented Level - 1 BLAS packages taking reference from LAPACK i.e. SROTG, DROTG, SDOT, etc. Added various tests, benchmarks for each pack- age to ensure reliability and performance of the library under the su- pervision of Athan Reines. Overall, my contributions significantly en- hanced the capabilities and usability of stdlib-js library.
Node.js experience
Same as javascript experience
C/Fortran experience
I possess a solid foundation in C programming, acquired during my undergraduate studies as part of the "Introduction to Computer Science" course. Over the years, I have honed my skills through the development of numerous projects and active participation in open-source communities such as LFortran and stdlib-js. With approximately two years of dedicated experience in Fortran programming, I have significantly contributed to the advancement of LFortran, a modern Fortran compiler built on LLVM infrastructure, where I hold the position of a core contributor.
Interest in stdlib
I harbor a profound interest in the advancement of stdlib, primarily driven by its dual significance. Not only does js serve as the cornerstone language for web development, but its growing relevance in the realm of scientific computing is equally compelling. This convergence of web technology with scientific applications within stdlib presents a dynamic and promising landscape, aligning perfectly with my interests and aspirations in software development.
Successful completion of this project will result in compilation and execution of majority of fortran files present in SciPy with LFortran. Then, LFortran can be integrated into SciPy build system with minor modifications.
Why this project?
SciPy forms the heart of the scientific python ecosystem. At its core, it also serves as one of the largest open source active (albeit indirect) user base of Fortran 77 codes including PROPACK, FLAPACK etc. These Fortran 77 codes are made available to Python users by the generation of Python-C extension modules with F2PY, which is part of NumPy. F2PY itself is not a compiler, however, and the Python-C extensions are built by a C compiler together with a compatible Fortran compiler in order to allow the usage from Python. Typically, the Fortran compiler used with SciPy is GFortran, although commercial compiler toolchains (Intel, Cray etc.) can also be used.
Qualifications
I have thorough understanding of LFortran & SciPy architecture. I am good at Fortran, C, python programming.
Prior art
NA
Commitment
I am ready to commit 20hrs / Week during the course of GSoC 2024.
Schedule
Assuming a 12 week schedule,
Community Bonding Period: This part of program starts from 4th May to 28th May, 2023, consisting of 3.5 weeks. During this period, I will try to work on highest priority package i.e. specfun and will try to get that compile to LLVM. There are many miscellaneous bugs that needs to be discovered and fixed considering present state of specfun and LFortran. My major goal will be list and resolve those down as quickly as possible. Having this will be a great step forward in this period. With all these, I will try to bond with the new contributors, interact with community members regulary, discuss the ideas and ways to implement them.
Phase 1: This phase starts from 29th May, 2023 and ends at 10th July, 2023, consisting of around 7 weeks. The weekly plan ( tentative ) for this duration is as follows,
• In the first week and second week, if specfun fully compiles to LLVM, I will be in position to start implementation of COMMON blocks. I will also start discussing to find a good way to implement it and will be open to ideas from fellow contributors. Else if specfun is not yet compiled I will focus to get it compiled first.
• For third and fourth week, I will mainly focus on BLOCK DATA im- plementation and will try to get it done as it more or less relies on COMMON, DATA blocks.
• During fifth and sixth week, SAVE attribute will be on my priority and I will try to implement it seeking help from mentor and community members.
• I will use seventh week as a buffer week so that if any deadlines are missed, I can work on those without stressing about deadlines.
All in All, in this phase I will mainly focus on implementation of missing features, if any new feature is discovered, I will try to accommodate imple- mentation of those in this phase itself. Apart from this various I will hunt and fix various miscellaneous bugs that are generated during implementation of this features.
Phase 2: This phase starts from 14th July, 2023 and ends at 21st August 2023, consist- ing of around 6 weeks. I will lookup any missed deadlines from phase 1, if there are any will prioritize those, else I will start hunting which files are not yet compiling, produce minimal code that reproduces the error and work on fixing it as per the priority of the packages assigned. This phase will purely be based on miscellaneous features that will be discovered while scanning SciPy with LFortran after implementation of the major missing features. If all the listed packages compile to LLVM, I will then lookup the unlisted ones and get those done. Overall, I have tried to provide a plan to fully accom- modate the requirements of the program i.e., work equivalent to 20 hours per week. If needed I will try to shift some work from phase 1 to community bonding and/or phase 2 to phase 1 period to speed up the achievements of goals.
Post-GSoC Period: After GSoC, I will continue working on LFortran to make it more robust and efficient for users. There are various scientific computing packages like LAPACK that are yet to be compiled I will try to get those done using the same way I followed to get legacy and modern minpack compile with LFortran.
Notes:
The community bonding period is a 3 week period built into GSoC to help you get to know the project community and participate in project discussion. This is an opportunity for you to setup your local development environment, learn how the project's source control works, refine your project plan, read any necessary documentation, and otherwise prepare to execute on your project project proposal.
Usually, even week 1 deliverables include some code.
By week 6, you need enough done at this point for your mentor to evaluate your progress and pass you. Usually, you want to be a bit more than halfway done.
By week 11, you may want to "code freeze" and focus on completing any tests and/or documentation.
During the final week, you'll be submitting your project.
[X] I have read and understood the application materials found in this repository.
[X] I have read and understood the patch requirement which is necessary for my application to be considered for acceptance.
[X] The issue name begins with [RFC]: and succinctly describes your proposal.
[X] I understand that, in order to apply to be a GSoC contributor, I must submit my final application to https://summerofcode.withgoogle.com/before the submission deadline.
Full name
Pranav Goswami
University status
Yes
University name
Indian Institute of Technology, Jodhpur
University program
BTech. Computer Science and Engineering
Expected graduation
May 2024
Short biography
I am a final year undergraduate in the department of Computer Science and Technology at Indian Institute of Technology, Jodhpur. I have completed following relevant courses in my academic curriculum in past years: Computer Organization and Architecture, Theory of Computation, Operating Systems, Software Engineering, Object Oriented Analysis and Design, Data Structures and Algorithms, Design and Analysis of Algorithms.
Timezone
IST (UTC + 5:30)
Contact details
goswami.4@iitj.ac.in, goswamipranav11@gmail.com
Platform
Mac
Editor
I utilize Ubuntu 22.04 as my preferred operating system, coupled with the Visual Studio Code (VS Code) editor, while also having experience with Atom and PyCharm IDE.
Programming experience
I have strong background in Python 3.x, C++11, Dart and Javascript. I have explored Flutter, Django, ReactJS, REST-APIs as well as having some experience with HTML, CSS during my undergraduate studies. A list of my ongoing and completed work is as follows,
JavaScript experience
Node.js experience
Same as
javascript
experienceC/Fortran experience
I possess a solid foundation in C programming, acquired during my undergraduate studies as part of the "Introduction to Computer Science" course. Over the years, I have honed my skills through the development of numerous projects and active participation in open-source communities such as LFortran and stdlib-js. With approximately two years of dedicated experience in Fortran programming, I have significantly contributed to the advancement of LFortran, a modern Fortran compiler built on LLVM infrastructure, where I hold the position of a core contributor.
Interest in stdlib
I harbor a profound interest in the advancement of stdlib, primarily driven by its dual significance. Not only does js serve as the cornerstone language for web development, but its growing relevance in the realm of scientific computing is equally compelling. This convergence of web technology with scientific applications within stdlib presents a dynamic and promising landscape, aligning perfectly with my interests and aspirations in software development.
Version control
Yes
Contributions to stdlib
Merged Requests: https://github.com/stdlib-js/stdlib/pulls?q=is%3Amerged+is%3Apr+author%3Apranavchiku+ Open PRs: https://github.com/stdlib-js/stdlib/pulls/pranavchiku Issues: https://github.com/stdlib-js/stdlib/issues?q=is%3Aissue+author%3Apranavchiku+
Goals
Successful completion of this project will result in compilation and execution of majority of fortran files present in SciPy with LFortran. Then, LFortran can be integrated into SciPy build system with minor modifications.
Why this project?
SciPy forms the heart of the scientific python ecosystem. At its core, it also serves as one of the largest open source active (albeit indirect) user base of Fortran 77 codes including PROPACK, FLAPACK etc. These Fortran 77 codes are made available to Python users by the generation of Python-C extension modules with F2PY, which is part of NumPy. F2PY itself is not a compiler, however, and the Python-C extensions are built by a C compiler together with a compatible Fortran compiler in order to allow the usage from Python. Typically, the Fortran compiler used with SciPy is GFortran, although commercial compiler toolchains (Intel, Cray etc.) can also be used.
Qualifications
I have thorough understanding of LFortran & SciPy architecture. I am good at Fortran, C, python programming.
Prior art
NA
Commitment
I am ready to commit 20hrs / Week during the course of GSoC 2024.
Schedule
Assuming a 12 week schedule,
Community Bonding Period: This part of program starts from 4th May to 28th May, 2023, consisting of 3.5 weeks. During this period, I will try to work on highest priority package i.e. specfun and will try to get that compile to LLVM. There are many miscellaneous bugs that needs to be discovered and fixed considering present state of specfun and LFortran. My major goal will be list and resolve those down as quickly as possible. Having this will be a great step forward in this period. With all these, I will try to bond with the new contributors, interact with community members regulary, discuss the ideas and ways to implement them.
Phase 1: This phase starts from 29th May, 2023 and ends at 10th July, 2023, consisting of around 7 weeks. The weekly plan ( tentative ) for this duration is as follows, • In the first week and second week, if specfun fully compiles to LLVM, I will be in position to start implementation of COMMON blocks. I will also start discussing to find a good way to implement it and will be open to ideas from fellow contributors. Else if specfun is not yet compiled I will focus to get it compiled first. • For third and fourth week, I will mainly focus on BLOCK DATA im- plementation and will try to get it done as it more or less relies on COMMON, DATA blocks. • During fifth and sixth week, SAVE attribute will be on my priority and I will try to implement it seeking help from mentor and community members. • I will use seventh week as a buffer week so that if any deadlines are missed, I can work on those without stressing about deadlines. All in All, in this phase I will mainly focus on implementation of missing features, if any new feature is discovered, I will try to accommodate imple- mentation of those in this phase itself. Apart from this various I will hunt and fix various miscellaneous bugs that are generated during implementation of this features.
Phase 2: This phase starts from 14th July, 2023 and ends at 21st August 2023, consist- ing of around 6 weeks. I will lookup any missed deadlines from phase 1, if there are any will prioritize those, else I will start hunting which files are not yet compiling, produce minimal code that reproduces the error and work on fixing it as per the priority of the packages assigned. This phase will purely be based on miscellaneous features that will be discovered while scanning SciPy with LFortran after implementation of the major missing features. If all the listed packages compile to LLVM, I will then lookup the unlisted ones and get those done. Overall, I have tried to provide a plan to fully accom- modate the requirements of the program i.e., work equivalent to 20 hours per week. If needed I will try to shift some work from phase 1 to community bonding and/or phase 2 to phase 1 period to speed up the achievements of goals.
Post-GSoC Period: After GSoC, I will continue working on LFortran to make it more robust and efficient for users. There are various scientific computing packages like LAPACK that are yet to be compiled I will try to get those done using the same way I followed to get legacy and modern minpack compile with LFortran.
Notes:
Checklist
[RFC]:
and succinctly describes your proposal.