Hello Tanmay,

There was, as far as I can remember, a post in this mailing list (perhaps by William Stein or Samuel Lelièvre?) offering answers to exactly this type of questions. I did not manage to find it, so here is my attempt to list some relevant links with some context:

For your first question:
* The Sage Developer's Guide contains a lot on how to develop in Sage, and how to contribute back. It may seem daunting at first, especially for people new to software development. Even fixing a very small problem (e.g. a typo) might take long the first few times, but people are usually happy when bugs are fixed.
* Sage Trac server is the place to report bugs or suggest enhancements (a new feature, a new implementation and so on).
* What happens when someone is not sure something is really a bug to report on Trac, or that an enhancement proposal is worth considering? They can try to ask in: This mailing list (sage-devel) aimed for developers, the sage-support mailing list aimed to a more general audience, ask.sagemath.org which is a Q&A site or on Zulip. There is a sage-edu list which seems to be abandoned.
* For Sage Days 78 from 2016 I think Kevin Dilks wrote a longer summery how to contribute to Sage. Maybe this should be in the main docs, after updates.

For your second question:
Different modern web frameworks allow to insert mathematical formulas and code listings in webpages. In some cases it is even possible to add SageMathCell cells. For example, related to the topics you mentioned learning, in the online version of the university-level textbook "Abstract Algebra: Theory and Applications" you can find sections with Sage tutorials and exercises using such cells. Usually it is better to first write the content you want in a tool you are comfortable with than trying to figure the exact technicalities how to publish it.
Sage uses Sphinx to generate its docs, written in a convenient textual format called reStructuredText (ReST). Projects such as the sage_sample template Sage package allow to generate documentation that look like the main docs, as they use the same Sphinx theme. Some Sage tutorials are collected at More SageMath thematic tutorials, and their generated docs are here.

For your third question:
Many of the Sage Days events are welcoming to diverse backgrounds and experiences, and not only experts in a specific field. By browsing through the talk and tutorial lists of some past Sage Days I noticed that they include from time to time talks about scientific software development not necessarily in Sage and mathematical education.

Regards,
TB

On 12/06/2022 20:40, Tanmay Kulkarni wrote:
Hello TB,

Thank you so much for the detailed response - these links are really helpful!
I had a few follow-up questions:
  • If I do stumble onto documentation that lacks usage examples, how would I go about adding examples?
  • Is it possible to write more thematic tutorials for Sage or would that have to be on my own site? I think my ideas for this would best be explained through tutorials with embedded Sage computations that (a) explain concepts and guide students to discovering things like the inclusion-exclusion principle and (b) teach the fundamentals of Sage (and Python too).
  • Are there any avenues where Sage education is explored and used beyond the Sage Education Days?
Thank you!

Sincerely,
Tanmay

On Sunday, June 12, 2022 at 9:26:26 AM UTC-7 mathzeta2 wrote:
Hello Tanmay,

On 11/06/2022 6:16, Tanmay Kulkarni wrote:
Hello all,

My name is Tanmay Kulkarni and I am a rising sophomore. I have also been taking several extracurricular math classes with Squares & Cubes on things like number theory, group theory, discrete math, and linear algebra. In these classes we have utilized Sage to explore mathematical patterns. For instance, in my discrete math class, I used Sage's graph functionality to take a stab at graph isomorphism, which eventually lead to a magazine article on using random walks on graphs to solve graph isomorphism.
Very nice!


During these various explorations, I realized that Sage was a very powerful tool to explain and provide intuition for complex mathematical concepts, however, (a) it is mainly used by those working in higher math, and (b) there is a high barrier of entry to implement concepts (even ones in lower math) in Sage.
I completely agree that Sage is a very powerful tool. Gathering intuition for complex mathematical concepts in many cases includes some visualization. For example, If someone never heard of Young's lattice, or even what is a lattice, looking at the plot in this thematic tutorial [1] can be a big step in understanding (at least in an intuitive manner) what is this object. In this case, the 6 lines of Sage code that produced the plot are included, so further exploration becomes easier.


Thus, I wanted to contribute to Sage and implement specific concepts which I felt high school students like myself would find interesting, and use them for educational purposes (e.g. at my school). Two basic ideas I thought of were:
  1. Random walks. I think mathematics is often far more engaging with a visual component (for instance, teaching graphing skills and different types of equations through a Desmos art project), and I think when talking about probabilities and randomness, an excellent visual representation of stochastic processes is random walks, which are currently not implemented in Sage. The other advantage of this is that random walks are often present in other places such as physics (in Brownian motion). This could expand into
  2. Venn diagrams. Venn diagrams are incredibly important; however, I could not find any Sage implementations of Venn diagrams beyond simply plotting intersecting circles. Having a more solid implementation could provide a strong, visual intution for a variety of concepts, like basic set theory, logical operators, probability, and even open the door for Edwards-Venn diagrams! Such an implementation would utilize Sage's 2D graphics (specifically the circle and text functions) as well as the detailed Set implementation.

Apart from static visualizations one can find at various docs, there is a page at the wiki dedicated for examples of Sage Interactions [2]. In particular, the "miscellaneous" page [3] includes two simple Venn diagram interactive cells, which might be what you already found. The interactions at these pages can be a good example of what is possible, but I will warn that some of them are quite old, and so they are not always implemented with modern best practice (e.g. deprecated functions). On a side note, here is a link to a beautiful interactive 7 sets Venn diagram [4] by Santiago Ortiz, inspired by Newton's theories on light and color spectrum.


At Brent Yorgey's blog there are (at least) two posts without words [5][6] that try to illustrate the inclusion-exclusion principle with Venn diagrams. I think the plots there were created using the diagrams [7] package in Haskell. I wonder if there is a similar Python package for vector graphics, as Sage usually uses matplotlib or TikZ which are sometimes harder to use.


Several people who I contacted referred me to this group, and thus I am wondering if anybody would be generous enough to (a) provide thoughts on the feasibility and usefulness of such an endeavor, (b) provide some direction or guidance as to where to begin, and (c) offer any potential avenues where this could be used.

Until then, I will be beginning to work on any very simple bug fix I can find to familiarize myself with developing in Sage.

It is always good to hear about people interested in Sage development. The Sage documentation [8] contains a lot: The reference manual alone will be thousands of pages long if printed! If you find a function or object you are familiar with that is already implemented in Sage, but their documentation lacks any usage example, or they mention a non-trivial notation without explanation (it can be tricky to define what is a "non-trivial notation"), then it can be a good idea to try and add them.


I think some of the Sage thematic tutorials [9] were originally prepared for university courses and later, after being tested in the real world, were incorporated into the docs. There are many cases of blog posts and tutorials for Sage programming or for a scientific concept that are not part of Sage docs, e.g. the SDSU Sage tutorial [10]. Writing similar texts on your own site is another possibility, and when you stumble upon a bug or a missing functionality in Sage, opening a trac ticket will be appreciated.


Thank you so much!

Sincerely,
Tanmay Kulkarni

--
You received this message because you are subscribed to the Google Groups "sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/bf2f8f57-628d-473a-a7b6-dfa0893694e5n%40googlegroups.com.


--
You received this message because you are subscribed to the Google Groups "sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/e9f737b3-24e6-8445-6ead-8fa3a9c16514%40gmail.com.

Reply via email to