There are already a lot of great blogs posts about the computer science Ph.D. experience, each approaching it from a different angle (the whole process of a Ph.D., how to choose your research topic, etc.). However, the ideas presented in most of these blog post come from the experience of one person while this blog is a condensed summary of in-depth talks with more than five professors and three Ph.D. student during the YArch workshop at HPCA’19. During these conversations, we discussed topics that are important for early year computer science Ph.D. students. We chose ten ideas we found most impactful to us, and explain five of them in detail and present the other five as short tips.
5 Topics
5 Tips
If you have more ideas, please comment at the bottom of this post!
Other amazing blogs out there:
Young Ph.D. students tend to spend too much time on courses. However, research outweighs courses.
Take courses with a grain of salt
Courses are not as important as they seem to be. The priority of a Ph.D. student is to do research – the earlier you start your research, the better off you’ll be in the long run.
However, don’t go to extremes! A poor grade can also be a huge problem. You should always be familiar with the requirement of qualification exams or generals and meet all the standards about the courses.
Remember the main ideas of courses
Trapping ourselves in trivial details of a course is easy. However, most of the specifics are not important to our research even if the topic is related to our area.
A good approach is to use what you’ve learned from one course and apply it to a different field (e.g., taking an analysis tool from a compiler course and applying it in computer networks).
Treat your Ph.D. as a job. You get paid (albeit not much) for being a Ph.D. candidate, so make your work worth the money. This professional mindset should also be apparent to your advisor. Some advisors take on a more hands-off approach, for instance letting you work from home, but this is no reason for slacking; you should be responsible for your research schedule, such as reminding your advisor of plans from previous group meetings. Your status is not that of a student but rather that of a peer in the research community.
Though it can be very daunting starting out, reading papers is an essential part of the Ph.D. life. Previously, you may have read papers when it was necessary for a class or a project. However, you should put reading papers in your daily routine. Doing so allows you to draw inspiration from a sea of knowledge and prevents yourself from reinventing the wheel. Besides, it’s a great way to be productive on a slow day.
Make a plan to read
When scheduling your day, assign one period just for reading papers. You can read one paper in depth or compare several papers; regardless of your choice, allotting time to this task is the key.
Read broadly
Reading papers from different subfields of computer science is a great way to learn the jargon, the method, and the mindset of researchers in each field. This can be the first step towards discovering opportunities for collaboration.
It is not uncommon for a Ph.D. student to spend several years building a system that turns out to be fundamentally flawed or not as applicable as expected. Don’t worry! There is nothing wrong with failing, and perhaps we should even expect failure to be part of the journey. But we should aim to fail early in order to have time to work on another project (and graduate!).
Perform a limit study
Perform a quick limit study before sticking with a project. A limit study includes in-depth analyses of implicit assumptions we make when coming up with an idea, a related works search, and the potential of the work if everything goes well. A great limit study can itself be a publishable paper. An example can be found here.
Hacky implementation can be useful
Being a researcher, your work is to develop proof-of-concepts. Nevertheless, you need to demonstrate that your concept is sound for the simplest of cases before continuing to the full-blown system. Hack in the minimum set to show that your idea is possible while resisting the temptation to build a robust infrastructure – if your idea fails, you will know to stop earlier.
Impacting humankind may sound too ambitious, but it should be the ultimate reason why we embark on this journey.
Choose an impactful research topic
In terms of how our Ph.D. research could impact human knowledge, I would like to refer to The Illustrated Guide to a Ph.D. by Matt Might. All we will do in five years is pushing the boundary of human knowledge by a minute margin. Choose a topic that you are able to contribute to, feel passionate about, and can explain the importance of to a layman in a 3-min talk.
Check out why Matt Might changed his research focus from programming languages to precise medicine.
How can our research actually impact people from other fields?
A survey paper by the Liberty Research Group sheds light on how the improvement of programming tools impacts (computational scientists) all scientists. Thinking about how your research affects people from other fields can help you define the scope of your contribution.
At some point, we will get bored with our research topic and find something else interesting. Think twice before switching topics. You must differentiate between your project heading nowhere and you getting tired of being stuck.
You should focus on publishing at only top-tier conferences. Don’t consider second-tier venues unless the work has been rejected several times by top-tier conferences. This can prevent you from doing incremental work to make your publication list look better.
For many fields in computer science, a mature infrastructure requires several years of development by multiple graduate students. Think about how to make use of the infrastructure and resources in the group to boost your research progress.
Even though we are just junior graduate students, we can have a massive impact on ourselves, our group, and even our department. For example, if there is no reading group for your field in your department, start one!
Needless to say, publications are essential since those are what people look at once we graduate.
All the ideas in this blog originate from the talks with mentors of the YArch’19 workshop. Thanks to Prof. Boris Grot from the University of Edinburgh, Prof. Thomas Wenisch from the University of Michigan, Prof. Vijay Janapa Reddi from Harvard University, Prof. Luis Ceze from the University of Washington, and Prof. Kevin Skadron from the University of Virginia.
Thanks to two chairs of the YArch’19 workshop, Shaizeen Aga from AMD Research and Prof. Aasheesh Kolli from Pennsylvania State University, for making this possible.
Greg Chan and Bhargav Godala from the Liberty Research Group were at most of these talks and helped me write down some ideas.