Unfortunately, I cannot respond to every email I receive. To help manage the process, use the following instructions to contact me.
- If you are currently a Columbia University PhD or Undergraduate student, email me directly.
- If you are interested in the PhD program, please read this section
- Otherwise, if you are interested in working in my group fill out this form. I guarantee I will read all responses, but cannot guarantee a reply.
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:
|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.|
|Technical knowledge||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.|
|Perseverance||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.
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!
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:
- Research supervisor
- Technical supervisor (e.g., your boss at a technical internship/job)
- Project partners (e.g., a maintaner of an open source project)
- Non-technical supervisor/Course instructor
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.
Some 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
- What to Ask When You're Applying to Grad School -neha
- An alternative CS graduate schools ranking tool: lets you rank by areas and criteria you care about.
- The N=2 Interview about Ph.D.s in Computer Science -phil guo, keith winstein, eugene wu
- The N=1 guide to grad school (and hopefully, knowledge work) -adam marcus
- 10 easy ways to fail a Ph.D. -matt might
- Advice for new Ph.D. students. -phil guo
- The Ph.D. in pictures. -matt might (so good)
- What makes a "great" Ph.D? -many many people
- Arnab's simple slides to simplifying research -arnab
- My Ph.D. advisor rewrote himself in bash. -matt might
- 101 (or thereabouts) of Margo's pet peeves in the writing of research papers -margo seltzer
*a research problem, at its most basic, is simply a problem that is very cool for which no obvious solution exists.