Applying to the Lab

Short Instructions

Unfortunately, I cannot respond to every email I receive. To help manage the process, use the following instructions to contact me.

Did you take a look at our projects?

My Goal

My goal is to help my students practice and refine their abilities as researchers, and produce interesting research as a side-effect (albeit an important one).

The following lists the abilities that I believe are particularly valuable:

Critical &
logical thinking
An important component of research is the ability to make logical arguments and back those arguments with evidence. This will be your most important asset.
Most computer scientists materialize their ideas through software systems and use those systems to gather evidence. Thus, the ability to quickly and effectively build the necessary systems will be a necessary component to your success.
Unlike classes, where a few all nighters is sufficient to get by, the Ph.D. depends on making consistent, long term progress. There will be many difficult times during a Ph.D. (e.g., paper rejections, creative blocks, or imposter syndrome) that you will need the willingness to understand and overcome.
Our goal when doing research is to push the boundaries of what has been explored. There is an art to refining and following your taste when picking a specific problem to work on.

To help me identify applicants that will be a good match, it is helpful for you to concretely demonstrate your current abilities.
The easiest way is to describe some past projects in terms of why they were interesting, your approach, the challenges and solutions.

Arnab Nandi has a particularly good example of a write up that is above and beyond what I would expect.

I don’t expect applicants to be experts at everything, so it is important to be clear about your strengths and weaknesses. For example, I did not have good writing technique when applying to graduate school and acknowledged it clearly in my application.

Finally, I will strive to work and generate ideas with you as a colleague. So describe some cool research problems that you would find awesome to work on!

Columbia Admissions

Computer Science at Columbia uses a centralized admissions process. Prospective Ph.D students apply to the computer science department at large, and faculty members review the applications and nomiate applicants for admission. For this reason, it is helpful to let me know you have applied if you are interested in working with me.

However, I will not provide feedback about your application through email. If you want a sense of what qualities I am looking for, read this form.

All applications should be submitted through the electronic system by December 15 for the Fall semester, and October 1 for the Spring semester.


The best way to convince me you can do good research is to have someone vouch for the good research you’ve done in the past. For this reason, the most effective letters are those from research supervisors that concretely describe your contributions to a specific project.

However, not every applicant has had the opportunity to perform research. In this case, letters that can describe your technical contributions, and the way you approach problems are most useful.

I will actively avoid reading letters that solely describe your performance in a course.

Thus, my general order of preference of letter writers are:

  1. Research supervisor
  2. Technical supervisor (e.g., your boss at a technical internship/job)
  3. Project partners (e.g., a maintaner of an open source project)
  4. Non-technical supervisor/Course instructor
Software Development

Software development will be a large component of any systems computer science degree. It is important to demonstrate that you will be able to develop the systems necessary to conduct research experiments. I am looking for students that have experience building systems – in particular database and high performance systems.

If you currently have less software development experience, that is OK if you demonstrate that you can and want to learn the necessary skillset. The best way is to show a sequence of projects that highlight your growth as a developer. I can use this to extrapolate how you will grow if you continue to learn.

In either case, links to relevant and well documented github repositories will be helpful.

Keep in mind that there are many applications, so I will likely skim your applications before reading a small subset closely. So make it easy for me to learn something while skimming.

Helpful Reading

I’ll periodically update the following list of links that point to useful articles for incoming/young Ph.D. students.

Applying to CS Graduate Programs
Ph.D. Advice