Hello Dr. Travis Scrimshaw and SageMath community,
I am Dhrumil,
a final year undergraduate pursuing B.Tech. in Information Technology. I have been associated with SageMath community for about a month now and wish to contribute to SageMath by participating in GSoC 2024.
My current progress :
(1) Have
successfully installed the developer version of Sage and
ran a few examples locally to get acquainted.
(2) To contribute to Sage, I first
revisited all the abstract algebra basics of groups, rings, vector spaces, modules, etc.
(3) I tried to solve a few good first issues and
have linked 2 PRs to the issues.
I am particularly interested in
"Improve (free) module implementations" project.
To understand the project, I have followed documentation and tutorial available
Combinatorial free module documentationFree module tutorialHere is
my approach and interpretation of the project -
SageMath has multiple implementations of free modules :
FreeModule - sage.modules.free_module and
CombinatorialFreeModule - sage.combinat.free_module
Potential Project Implementation steps :
(1) Creating a common abstract base class
this will contain all the common methods and attributes of both the implementations
Eg) Both implementations have basis() method, this can be included in the common base class. Similarly change_ring() function is also common.
(2) Integration of dense representation for CFM
Improvising the CFM implementation to support dense representations for applications requiring heavy use of dense linear algebra.
(3) Refactoring both the implementations
Improving code readability, eliminating redundant code, deprecating unwanted methods
(4) Proper documentation and testing with some examples
I am unclear on a few things in the project.
Q1) I was going through the codebase of sage.combinat.free_module and sage.modules.free_module
They have quite a number of methods (some with same names and some with other names)
What are the major methods which are to be shifted to a common base class and which methods need to be explicitly present in the respective implementation classes only?
Q2) Also, I am unclear on why is there still a need to keep both the implementations of free module? Can't there just be 1 free module implementation?
It would be beneficial if you can help me understand the project better.
I am also planning to write a proposal on the project. Once I draft the proposal, It would be helpful if we can discuss the project proposal in order to better address the project's objectives and implementation.
Along with this project, I am also interested in "Coordinate the graded commutative algebra and exterior algebra implementations and Gröbner bases" project. I do not entirely understand this project at the moment and currently, I am exploring Grobner basis.
Please can you also provide me some resource in order to understand Singular's plural library implementation as well as SageMath's implementation of exterior algebra.
Regards,
Dhrumil.