Okay, you wanna PhD? I assume you already decided you want to get a PhD in Computer Science related field and you are currently in a research University doing undergrad or master. This article will not help you decide whether PhD suits your need, you will have to figure out by yourself. I assume your target is top PhD programs in U.S.

Something to consider:

PhD Application

Hardness: say you are in a top 3 research University in U.S., getting into a top PhD program in top 3 research University is not easier than you getting into your undergad program. In another word, say your current University accept 3% of applicants from all over the world, then it's like 3% of applicants from your current school will get into its PhD program. Machine Learning related research is 1~2 levels harder than regular Computer Science PhD.

You will need following things to get PhD:

Connections: this means making firends with professors.

Papers and Projects: less important than connections

GPA: act only as a filters

How to get into a Lab?

Getting into a lab in a research University is easy. You can do it as a freshman! The earlier the better. Normally people do it in summer. But if you can devote 20 hours a week during school semesters, that's fine too. However, having a good project in a lab is hard. Most people who I know started their 1st research in freshman year and only in their 3rd year settled down to a publishable project. You have to be extremely lucky and skilled to get a good project.

You should do the following:

Or, if professors don't reply your email

Or, if you are afraid

How to get a Good Project?

Unless you can successfully pitch a project to a PhD and he/she has the ability to advice you, you will be assigned to a project. Depending on the ability of PhD and how he/she likes you, you may get good project or shitty project. Reason:

Low Risk: the idea will likely give SOTA result.

Publishable: the idea is novel enough and you can give insights to other researcher (usually with math and equations), not just pure engineering or doing application.

Nobody in Theoretical Computer Science like to have undergrads since theory has long learning curve. Don't do theory and math.

If you have 20 hours a week and/or wish to get a industry internship, choose a topic that is "hot" (Machine Learning), otherwise choose a cold project

How to do Research?

The professors will not meet you often, instead, your PhD advisor should arrange meetings with you once a week.


  1. read related papers (~5) that establishes the field, often with really high citations
  2. read code base (~2) of those papers
  3. choose the code base you want to work on and tweak it so that you understand the effect of each parameter
  4. start implementation and do ablation study right after a thing is implemented and make sure it works with no bugs

While doing all these steps above, if you are in a hot area, subscribe to some Youtuber, newsletters about your research. You should be alerted if someone if doing similar things.

Research code base is very different from software code base:

Once you ran a lot of experiment, you might be more capable of generating good ideas than your PhD advisor. At that time, take their word only as advice. Tweaking someting that you know will not work still have value and will build mental picture about your project, but you should stop implementing something you think will not work after you feel like you have a very good understanding of the field.

Table of Content