I just graduated from UBC with a combined degree in math and computer science. I’m probably not the most qualified to talk about this, but here are some things which helped me survive that whole ordeal.
cheat sheets. In my experience, pretty much all of the memorizable content from my math courses has been able to fit onto two or three pages (the flip-side of this is that the game really becomes learning how to build enough intuition to do proofs under time pressure). Making cheat sheets is a good way to make sure you haven’t missed anything, which totally killed my performance on more exams then I might like to admit.
deconstruct proofs. Go through your list of theorems, and try to summarize each proof as succinctly as possible. Answer the question: “if I were coming up with this proof, what would I have to notice to take the next step?”. A lot of the steps will probably be mechanical, so don’t waste your time thinking too hard about anything you can re-derive. I think that at this level, pulling out vague patterns (eg. “if P depends on something being finite, it may work on compact spaces”) is a great substitute for any sort of divine mathematical intuition.
Good exam questions normally only require a few really clever steps. At the very least, by extracting the common ones you can massively reduce your search space.
contradict weakened theorems. Most of an undergraduate degree is a well-trodden path, and as such the theorems you will use are typically in their weakest possible form1. You can exploit this for a study strategy: remove a precondition for the theorem and try to come up with a counterexample or a proof; it will usually be a counterexample. I mainly found that having a rich bank of counterexamples helped me intuit my way out of dead ends, which can be critical when you’re in a time crunch on a test.
read several books at once. Your professors might seem like they’re pulling questions out of the air, but they definitely don’t. Always look for at least one other “classic” textbook on the subject (don’t ask me where I got mine 🏴☠️). If your professor is a domain expert they were probably influenced by some of these books, and this occasionally shows in the topics they test you on. In any case, hearing more takes on a topic is always a good thing for building understanding.
take time off. Admittedly I’m privileged here. In the summer of 2020 I was out of work and living off of CERB checks from the government– for two months I had no responsibilities whatsoever. In that time I found a passion in logic and programming languages which completely changed the path of my degree. It’s impossible to try and tell someone to just figure our their life, but finding my focus let me start to do deeper reading in that area and gave me a useful motivating context for the classes I would take later on.
trust the curve. This one mostly applies to my experience at a Canadian university. Unlike some other fields math exams have essentially no upper bound on how hard they can be, because the skill of “coming up with a proof” scales all the way up to “do novel research” and many subfields of math are able to state unsolved problems even after one undergraduate course. Don’t worry too much about absolute grades, if you’re in the right math courses there’s really no objective standard of knowledge an instructor can measure your ability against.
One exception I found to this was in graph theory, but I think it’s because we were working on more modern stuff and also that number theory is satanic.↩︎