Tips to Become a Better (Computer Science) Ph.D. Student

- 7 mins

Why does the world need another blog post?

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:


5 Topics

Research > Courses

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).

Be professional

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.

Read a lot and read broadly

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.

Fail fast

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.

Impact humankind

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.


5 Tips

Don’t give up on your research topic easily

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.

Aim for top-tier conferences

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.

Use existing resources in your group

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.

You are powerful!

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!

Focus on publishing

Needless to say, publications are essential since those are what people look at once we graduate.


Acknowledgment

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.

Ziyang Xu

Ziyang Xu

Graduated PhD @ Liberty Research Group, Princeton University

Greg Chan

Greg Chan

Graduated Master @ Liberty Research Group, Princeton University

comments powered by Disqus
rss acm gscholar facebook twitter github youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora