PhD

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

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.

PhD Application Requirement

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. However, because of this, if you get a position in theory group, you will likely be directly advised by PI.

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.

Advisor: you will get direct advised by PI if the group has only about 5~8 people. However, the most you can get from a PI is having 30min to talk to you every week. For a larger group, you will be advised by a PhD or Post-doc student. But do not rely on them. Your job as a research assistant (both paid / unpaid) is to trade your publication for their recommendation letter. That's it. The less you annoy other people, the better. However, do socializing, update your results, and help other people in the group to let PI remember you.

Steps:

  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.

Product vs Publication: There is a distinct difference between product and publication. A project has to work and make people happy, but they might not look nice. A publication has to look nice but they might not work. Most (>90%) of accepted paper in top conferences do not work (meaning they are useless in product sense). They are accepted because: (1) 3~4 reader learned something they did't know after reading your paper (2) your picture in your paper look nice (3) your number in your paper look nice (3) your writing and presentation of your paper is strong. Note that many paper do not report confidence range in their numbers and authors might only select experiments that look good. Some would extremely overfit their ML model. This happens a lot in robotics. To make a project into product takes 10x effort than a publication. So don't waste time trying to make a product. Instead, before the project even begin, set the target to produce (1) visualization (2) numbers that you will eventually use in your paper. Don't spend time making your code look good. Nobody cares about your code and you only publish your code months after your paper got accepted. Note that writting fast but shitty code only when you're confident that you know how your code will function correctly.

Professor Search

Website:

Statement of Purpose

Website:

Computer Science Admission Rate

Most info from: this article. Data is 2023.

Buff:

Info:

Future:

Computer Science Admission Rate

Computer Science Admission Rate

Master program ranking: website

欧洲: 陶瓷是必要的, 欧洲的老师更偏爱 MS 的学生,以及会喜欢高 GPA 的学生.

Interview

Articles That Mentioned Interview but I haven't look at that portion

Example Questions to Ask

Students:

My big direction: computational design by blending 3D + traditional algo (e.g. simulation, procedural gen) to create artists' tools

Student QA:

Potential Idea:

Prof QA:

General QA:

Other Readings

[Apply]

Application

Application Fee Waiver

Apply to more REACH school increase your change of getting into your top choices. But application fee can range from 50~200 which is expensive. Here is a guide to waive such fee: waiver

Other Online Sources:

Singapore

They care about your GPA, but not as much (>3.5)

HK

They care about your GPA (>3.75)

Europe

Generally you need master to apply European schools. They care about your GPA (>3.75).

最认可欧洲周边熟悉的学校+美帝名校录取ETH PhD的中国人Master学校/研究所背景 瑞士: ETH | UZH | EPFL | Uni Bern | Uni Basel | PSI | EMPA 德国: TUM | RWTH | KIT| TU Berlin | LMU | Max Planck 法国: EP | ENS | 巴黎N大 | 部分 Écoles d'Ingénieur | 部分 École Centrale | CNRS 瑞典: KTH | Chalmers 意大利: Politecnico di Milano 新加坡: NUS | NTU 美国: CMU | GT | UIUC | Columbia | NorthWest | Harvard 英国: IC | Ox | Cam | Edinburgh 中国: THU | PKU | SJTU | FDU | TJU | SEU | SCUT | NJU | CSU (不完全list)

Table of Content