Module 4: Skills: Part 2
Identifying whom to work with
Finding a good first lab or professor to work with to get started with research can be intimidating. Who should you work with? How will you find out about them? How do you know whether what you are seemingly interested in is more than just a crush?
If you have active researchers in your college:
Going back to Module 1, identify a course or a topic that you thought was interesting.
Find out relevant professors and research groups who work in this area. If such groups exist in your college, nothing like it; makes it that much easier for you.
Figure out what they’re working on, try to understand the work for yourself, and do a good deal of homework.
If this is a professor with whom you’ve taken a course, then earnestly participate in their class, and see if you can get started with something simple via a class project which will demonstrate your interest in the subject.
If you haven’t taken a course with this professor, do your homework (see below).
If you do not have active researchers in your college:
Most professors in colleges in India do not have an active research interest–that is the reality here. In which case, how does one start off?
Answer – do your homework.
Do your homework
Start thinking for yourself what problems you may want to tackle. This will ideally be informed by some coursework you have done, or some projects you have dabbled in.
How do you find such projects? Some well maintained projects have a number of open issues which are good places for beginners to contribute.
Note - for those new to this: most well maintained implementations of research projects, across various disciplines in CS research, are hosted on sites like Github by the authors. Community members using these tools will often find bugs and limitations, which they hope to see fixed/improved. Researchers who author such tools greatly appreciate help from other community members to address such issues. See an example here.
This is where a total beginner can also easily contribute.
Articulate and document the problems that you are interested in and have identified. These first thoughts may be ill-posed, and may perhaps be even intractable. But that’s a good start anyway. Document them on your webpage, show it around to peers using platforms like Twitter, Linkedin, get some feedback. This should get you to concretize some broad direction that you want to explore.
Next, find out faculty who may be doing interesting work in the area you have identified. How do you do this? Start off with resources like CS Rankings. This webpage lists out (an incomplete set of) researchers from various universities and countries who publish at top venues in their respective fields.
Note: It’s easy to spend all one’s time in figuring out details of such faculty–learn to stop when you find yourself spending more time looking up such information than actually getting concrete work done.
After having identified a set of faculty relevant to your interest, do you homework: see how their interests concretely align with what you wanted to work on. What you proposed may end up being very naive and uninformed, while the faculty may have worked on something much more specific and concrete. That’s a good sign – you now have a reference which will help you learn and improve yourself.
See if they have a code repo for any of their projects - and if yes, download and play around with them.
Read any blogs they may have published which explain their work. Try reading through any of their papers and getting a sense for key questions they pose and the results that they offer.Consolidate all this information, and articulate your observations. See if you can help identify a weakness or an extension in their work, or can articulate a question of related consequence. This is a hard thing to do. Be patient and persistent: constantly evaluate whether you’ve understand what it is they actually do, and see what little, modest improvement or extension can be thought of.
While articulating and thinking about such modifications are great, what is crucial is your ability to translate that idea into something tangible to quickly validate its feasability: write out code, start off writing down a proof, start building a prototype of your system. Just this act of translating your ideas will be a substantial learning experience. It is just not enough to find and think about these little modifications without translating them into something concrete. Your ability to implement your idea is much more important. This implementation is what will go into your “portfolio of work” (introduced in Module 3), which you can later use to show off your expertise in a topic.
Once you have some modest results or progress into having set up their codebase, or on a proof sketch, or some initial prototype to test out the feasability of the extension you propose, consider reaching out to the professor with your queries and thoughts.
Doing this is far more valuable than cold emailing them and asking them if they have any project vacancies.
Writing emails when reaching out
Writing emails and reaching out to professors is a great way to introduce yourself and enquire if they have any intern openings. However, due to a lack of training and critical introspection, we often end up writing emails which are too long and have very little content.
Do appreciate that professors deal with ~100 emails a day which require their active attention.
What is the least you can do to make sure your communication is informative?
Example 1
Greetings.
I, XYZ, am a Research Engineer-AI at ABC. I am looking to apply for the Ph.D. program in EECS at your university.
I am writing to you to inquire about the Information on your lab. I have been conducting research on Deep Learning and its application: .
I have read several publications from your lab and I think the research being carried out at the lab interests me enough to pursue a Ph.D. I wanted to learn more about the lab and its members. Specifically, how often do members meet with the advisor and with one another? What are the expectations of the advisor in terms of results and publications? What should be the profile of a potential candidate willing to join the lab?
Please find attached is my CV for your reference and I would be happy to answer any further questions you may have.
==========Example 2
Dear Sir/Madam,
I hope you are doing well. I am ABC, an undergraduate computer engineering student at XYZ. My research interest focuses on adversarial machine learning, federated learning, and AI for cyber threat detection. I have worked on multiple research topics like data poisoning attacks, differential privacy, federated learning, gradient leakage attack, and have published papers at international conferences and journals.
I found the projects in your lab very much relevant to my previous research works. I am looking for a 6-month research internship (Jan - July) in your lab. Earlier I had a research internship offer from one US university but due to the COVID situation, it got revoked a few days ago. I had some industrial offers but since I wanted to pursue research I denied them. Since my research internship got canceled, at this time, I am very much in need of an internship. I have attached my CV for your reference. Working with various professors, I have developed strong research experience which will be surely an asset for your Lab. I am looking forward to hear from you.
============In the context of having identified whom to work with and having done your homework, don’t just fire away an email which you haven’t put a lot of thought into.
Resist from writing to them in such cases, continue working on your idea, perform those little experiments, take it to its logical end, and then consider writing them a cogent and brief email explaining who you are and what you have found out.
Professors will appreciate this many-fold more than just a cold email asking about project vacancies.
Communicating with sincerety
You reach out to a professor, they like your work and enthusiasm, and they assign you a project to get started with. Great. Given the lack of exposure, it is likely you will face multiple hurdles–be it in understanding the topic, trying to setup a codebase, etc.
Further, since your mentor has not worked with you before, they will tend to start “your account” with a trust-deficit. Every positive interaction you have with them will slowly build up trust–wherein they can trust you with executing the project well, and not worry about their time not being spent well with you.
Enter good communication and sincerety.
These two end up being critical to ensure you go past hurdles and ensure your mentor is aware of what you’re upto.
And unfortunately, this is where our instincts can massively fail us.
We tend to doubt ourselves and see attempts at communicating with mentors as “wasting the mentor’s time with silly doubts”.
Yes, you are expected to thoroughly try things out for yourself first, but keeping your mentor posted on how you plan to solve a problem is a great way to ensure they know what you are upto.
Many times, just mentioning the broader plan you intend on employing to solve a problem is enough to get the mentor to suggest quick modifications and course corrections.
This saves time, demonstrates that you are actively thinking about solving the problem, and improves the overall working relationship between you and your mentor.
Publications
A publication is not necessary to be successfully admitted to an MS/Ph.D. program/a research job. However, writing will teach you to make cogent arguments, and go through the process of scientific peer review. If you do end up in a career in research, you would end up regularly writing and communicating your work. Writing a paper during undergrad is a great way to test whether you enjoy this process.
Moreover, academic papers are not the only way for you to learn and test this skill—you could perhaps just write out a blog, a tech report, etc. which will serve the purpose equally well.
Again, what matters is your ability to demonstrate some maturity in recognizing a problem in the field you want to work in, and talking about why you think it is important to address it.
Note - if you are going to publish your work, it is important also to understand where to publish—most academic conferences and journals out there are outright fraudulent. They charge obscene amounts of money, and offer very poor peer-review.
If you’re not sure, aim for a workshop at the top conference in your field, or a student-friendly journal/conference to begin with. These generally encourage student submissions, and have high quality peer-review processes. If not, a thoughtful blog post or tech-report should work equally well. See the list of conferences/journals [link 1][link2] used by CS Rankings to learn the top-tier venues in a given research area in CS.
See also Achu Wilson’s experience in publishing a paper at ICRA, one of the top conferences in robotics, when he had little direct mentorship.
Walking away from opportunities
What we have introduced so far borders the ideal—where you reach out to a professor with your thoughtful ideas on a project idea, and they interact with you earnestly, and possibly even offer a research stint in their lab/group.
The reality of working with professors may sometimes end up looking pretty ugly:
Your mentor encourages an abusive work environment. There may exist a toxic working culture in the group–late nights and weekends in the labs required of all the students; a general authoritarian, abusive atmosphere; pitting one student against another in attempts at making them all “productive”, and so on.
Don’t mistake this with the situation where students are driven and motivated to spend some extra time in their labs because they enjoy their work thoroughly.Your mentor actively encourages fudging and manipulating data to make their work publishable, or encourages plagiarism.
Your mentor makes you do meanial chores. For example, they get you to do their errands (unrelated to your work), get you to write out portions of text for a book they’re preparing, etc.
Note - don’t mistake “doing crud work”, which comes up routinely as part of most research, for abusive chores.
“Crud work” comprises most of any systems-related research in CS.
Starting off with original systems research will likely require you to be involved in a fair amount of such “crud work”—staring at network packets for some trends, labeling thousands of images or text samples, etc.—all of which will hopefully teach you enormously about the nuances of the systems you plan to build.Your mentor treats a subset of the students in their group without any empathy, or harasses them mentally, sexually, or physically.
Your mentor gets you to work on a portion of a project without any plans of acknowledging your effort in any of their publications.
and more.
These are all red flags.
Identify and acknowledge such situations when they happen to you or your peers.