Now, during my entrance exam studies, I saw in the Casella and Berger book a recommendation to learn Mathematica (or something equivalent).
I already program quite well (Python, R, Go, Lisp some C) so no challenge on that side.
I'm somewhat insecure with my algebraic manipulations (takes me a few tries to find the correct way to solve a few problems).
So, I'm wondering if those types of symbolic manipulation software are something I should take some time to learn. I don't know anyone that uses them so I don't have anyone to ask.
If it makes sense, do you guys know of a nice introduction resource I could use?
I'd say out of the box Mathematica has ... nicer visualizations, more available functions, better symbolic math, etc. It might be possible to get some similar functionality in Python, but it would be a hassle. On the other hand, Python will have the bleeding-edge latest implementations since more people code in it.
That said, Mathematica does keep up to date. For example, the latest version auto-imports neural net/LLM weights, visualizes their structure, and lets you capture values from anywhere in the circuit. IMO it's great for learning how they work. And it has some neat ChatGPT integrations, auto-runs code, etc.
- This is my favorite intro Mathematica book (for programmers/academic-minded people): https://www.amazon.com/Mathematica%C2%AE-Problem-Centered-Ap....
- There are also good free tutorials like their Fast Intro for Programmers: https://www.wolfram.com/language/fast-introduction-for-progr...
That doesn't mean the math you implement in this software will be easy! But I expect that the programming itself won't prove to be much of an obstacle.
I definitely recommend you learn one or more of these languages -- but not necessarily to the scale where you're writing large and complicated programs. I use PARI/GP, a software package similar to Sage which is well suited for number theory in particular -- and my particular use case is a 40-to-150 line program that carries out some particular computation I'm interested in. Usually it will just be simple functions, array manipulations, for loops, computations, library calls -- programming at the level you'd master by the end of an intro CS course.
What to use depends on what kinds of problems you need to solve. SymPy is really good for a lot of things, very simple to use, and just a Python library. Sage is more powerful in some areas (which may be irrelevant for your needs), but a much bigger beast. There are several old, powerful, clunky CASs like Maxima, Axiom, FriCAS, that you probably don't need.
I suggest starting with SymPy. Working on getting better at doing things by hand will be useful even if you mostly use a CAS in practice, since knowing how to do it by hand will mean you know what to tell the CAS to do.