Ben Burns | UMass Math/CS advice
This page includes my advice for undergraduates at UMass Amherst wanting to do research in math or CS. This is my personal advice, based on my own experiences as a UMass undergrad, and from talking to my peers and mentors. As I say below, there are people out there who know far better than me. However, I've had quite a few people asking me recently about how to get into research at UMass and about choosing to apply for grad school, so I wanted to write some things down.
My advice is aimed mostly at people studying applied mathematics or CS. If you want to do pure math, see Tevelev's webpage.
Go to seminars (every week)
Seminars are how you get exposed to research. I attended the CS theory seminar (nearly) every week from sophomore year through senior year, and it was the most important course I took at UMass. The majority of the faculty and graduate students that I know are through the theory seminar, and I only got the confidence to get into research because of the seminar.
In a traditional course, you are taught one broad topic over the course of a semester. Since you only take four to six classes a semester, this isn't a lot of topical exposure. Additionally, math courses usually don't teach you anything invented after 1900, and CS courses typically don't get to the 21st century until the 600s.
In seminars, the speaker gets an hour to get a you up to speed on their current research. If you attend a seminar every week, you see a diverse selection of research areas and topics, which will give you an idea of what areas interest you, which classes you want to take in the future, and who you might want to work with for research. If you can't get into a certain grad class, but go to their seminar every week and ask good questions, that can be the difference for working with some faculty.
You will not follow the seminars at all at first. This is completely normal, and you should do your best to not get discouraged. So long as you do your best to follow the general ideas (what is the goal of the talk? what problem are they trying to solve? why does the talk matter?), seminars are a great way to get exposure. The math seminars are generally only accessible to graduate students (some are only accessible to faculty), so I'd only recommend going to the ones you are particular interested in (plus undergrad math club). The CS seminars (Theory group, ML with friends, etc.) are accessible, and filled with wonderful faculty and grad students who you should get to know.
Strike a balance
If you want to apply to graduate school, you need to balance taking difficult courses that demonstrate your ability, getting high (but not necessarily perfect!) grades, research experience, teaching experience/outreach, and accolades. I've had friends with who took 500s and 600s with near perfect GPAs and no research that get rejected by every grad school, and so you need to balance all three. Find your own way to stand out.
This also applies to your personal life. If you do too much school and take no breaks, it will be a miserable time. If you take too many classes, you won't learn any single course very deeply, and will just be struggling to get good grades (see the next point). Depression will effect your ability to do your schoolwork and your research, so it's important to take care of yourself.
Learning matters more than an A
This is a huge mistake I made early in my undergrad career, especially in my pure math courses. You will at some point barely scrape by in a course, trying your best to get an A, and look back to realize you don't understand major chapters of the course. This stuff builds: if you struggle in proofs, which makes you then struggle in real analysis, then you aren't going to be very successful in a measure theory course. If you don't learn it the first time, you will have to come back and learn it properly when you need to apply it.
Of course you want to get an A to maximize your GPA, both so that the department lets you take cool 600-level classes and for grad school apps. What I am saying is: learn the content first and focus on the A after, don't just skip to maximizing your GPA. Moving axioms and theorems around on the homework to get a 100 without stopping to think about how things work or why certain things are true is dangerous, and will bite you eventually.
This is not just important for classes. Probably the most important question I was asked in my undergrad was when I was presenting my research to a professor outside my group, and he stopped me to ask how he should think about one of the intermediate equations I just breezed past. I had no answer, but picking at that was later very important for developing an understanding of why our research was important. Afterwards, I became much more oriented towards asking questions about how I should understand things or the best way to think about a topic, not just worrying about getting the gist and moving on. If you don't understand your own research or don't properly study the related works, it will bite you when people ask you deep questions about why your work matters or why it is novel.
Take theoretical classes
Theoretical courses such as advanced linear algebra, probability theory, and real analysis are important courses that you will refer back to continuously. Even if you want to just do applied machine learning, you will have to read and understand papers that use lots of linear algebra and real analysis from time to time. Before I switched from pure math (algebraic topology) to applied math (mathematical ML), I took graduate topology. Even though I doubt I'll need to know what an exact sequence or deck transformation is for my ML research, having a strong foundation for point-set topology has been a super useful source to fall back on and pull from. You will also periodically run into theoretical objects in applied classes: two examples that come to mind are
- reproducing kernel Hilbert spaces
- bump functions and partitions of unity in the proof of the universal approximation theorem.
Also, theoretical courses are usually faster paced and more challenging. Taking theory classes will make the rest of your courses feel easier. Even if you don't apply the content, theory classes make you learn an organized way of thinking and teach you how to ask good questions, which is powerful when you then go utilize that same way of thinking for more applied courses. I am always happy to answer questions (by email) about courses I took (and, equally important, courses I chose not to take).
Be wary about self-teaching
Some people say that you can self-teach undergraduate courses and just jump to the graduate courses. I did not realize that this advice is for people who have lots of math experience going into college (or are way smarter than I am). I told myself sophomore year that I would self-teach undergraduate complex and jumped right into Math 621. It did not work, and I barely passed. The experience taught me lots of important lessons about my perspective on learning, and taught me how to ask good questions not the questions the professor wanted me to ask, but I didn't learn a whole lot about complex analysis. If you want to self-teach something and don't feel like the undergraduate version of the course is challenging enough, approach a professor for an independent study.
Being able to self-teach is an important part about learning to do research. However, if you, like me, had never done proofs before college, take the undergraduate sequences in your freshman and sophomore years, and don't just skip to the graduate courses. It is important to have a deep understanding of courses like linear algebra and real analysis when you need them, which you will not get from self-teaching.
Build relationships with faculty, and join a research group
Faculty are the ones who can give you the best advice about which courses to take, what projects to pursue, where to apply to graduate school, etc. Working with faculty is how you get into research, and so (generally) the earlier you can start working with faculty the better.
However, it's important that you don't accept the first research opportunity you are handed just because it is research. You will put considerably less effort into a research project you aren't interested in, so it's important to work on research questions you actually want to solve. On the flip side, if you're not getting into research because you aren't sure which field you like, jump into a lab and try something. Wait too long and you'll be applying to graduate school without research experience, so it's important to strike a balance.
It can be hard to get faculty to let you do research with them. However, what is usually much easier is joining a faculty's research meetings with their research group. If faculty you are interested in working with have group meetings, such as ones where a single group member presents their current work or a paper they are interested in, ask to join to just watch the talks. If they are also a seminar/open to the public (such as Learning Learning), just show up.
Become a UCA or a grader
As someone who UCA'd 10 times, and objectively would have had significantly more time for research than I did had I not UCA'd so often, I can recommend that any prospective researcher serve as a teaching assistant or grader at least once. You learn a lot about courses work from the managerial side. This is another great way to meet faculty and graduate students, and UCAing for a class you just took can actually be a great way to meet other undergrads. You'll build up lots of communication skills, which are important for communicating your research. I would not be remotely as outgoing as I am now nor would I be as proficient at public speaking had I not UCA'd (anyone who went to one of my review sessions freshman year can vouch). Also, if you go to grad school, you'll probably have to TA, so get the hang of in your undergrad when you have more free time. Again, just make sure you balance your UCA time commitment with your other responsibilities (and do not exceed your hours!).
Don't be afraid to tinker
Sometimes you might find yourself interested in how a particular paper/algorithm works, or if method X solves problem Y. The tempting thing to do is to just ask someone else, but I highly recommend just trying it out yourself. Testing these small hypothesis is something we all don't do enough of. If it's a simpler algorithm try coding it up and running some experiments. For example, you can learn a lot about numerical integration by coding Euler's method and RK4 from scratch and just testing lots of different functions, even though they're each only a few lines of code. If it's a paper with code, clone their repo and try running their code.
Sure you shouldn't try and reinvent the wheel, but don't just trust other people's opinions on what does and doesn't work. Try it yourself, and build your own intuitions.
Do not go about it alone
It is extremely important to have friends and faculty to support you. Preparing yourself for the job market or graduate school is not easy, so make friends in your classes, go to office hours, and rest. No one does this by themselves, and it's okay to ask for help.