Associate Professor

438 Gates Hall
Computer Science Dept.
Cornell University
Ithaca, NY 14853

(607) 255-7673
(607) 255-4428 fax

Twitter: el33th4xor
Blog: Hacking, Distributed

Information for Prospective Students

Thank you for your interest in working with me. I receive a fair number of inquiries from prospective graduate students every week, and have put together this page to answer the most commonly asked questions.

Prospective Ph.D. Students

How do I apply to the Ph.D. program to work with you?
It's quite easy, everything you need to know is described here: Cornell Ph.D. Applicant's Guide.
How do Ph.D. admissions really work behind the scenes?

Admissions decisions at Cornell (and, incidentally, other top-5 schools) are made by a committee. The committee admits students into the department; the department guarantees funding and provides a stipend; the students typically spend a year or so taking classes; and eventually the students gravitate towards different advisors. Committee-based admissions gives you maximum flexibility as a student: you can switch areas and advisors if you need to. It also ensures that everyone around you has been subject to the same standards, ensuring that your peers are as equally bright and well-versed in computer science as you are.

At some schools, individual faculty get to make their decisions independently and admit students specifically to their group. A student showing up at such a school is expected to work with the professor who admitted him/her. This is not what we do at Cornell for many reasons. Committee-based admissions, as we do at Cornell, fosters an open, collaborative environment of equally matched peers. It also means that I will not be making the final admissions decision on your case by myself; some years, I might not see your folder at all. You will get in based solely on the strength of your accomplishments, as demonstrated to the committee through your application.

What does the admissions committee look for in a candidate?
The admissions committee does not apply a magic formula; in my area of systems, it strives to admit the most promising system builders, hackers, brilliant scientists and immaculate engineers. The committee evaluates the entire application packet. Every item that is a required part of the packet is examined carefully. A weakness in one area (say, GPA or GRE scores) can be compensated for through demonstrated strength in another (say, real implementation experience, or research publications, or recommendation letters). The department posts the minimum required criteria for all graduate applicants. If your scores are below these levels, your application will not be considered.
Can I get financial aid for my PhD studies?
Of course. Our department provides full tuition plus a stipend to every admitted PhD student, for as long as they are a student in good standing. The stipend amount is plenty to cover the cost of living in Ithaca (which is cheap), with extra left over. When I graduated from my undergraduate institution, the thought that someone would fully fund my graduate studies seemed unbelievable, but it is indeed what we do.
I am sending you my resume. Can you tell me my chances of being admitted to Cornell?
No one can tell any prospective's chances of admission from just a resume. Your recommendation letters, your scores on standardized tests, and all the other items that go into the full application packet are required for a good reason.
Ok, I am sending you my full application packet. Can you tell me my chances of being admitted to Cornell now?

Since the chances depend on the strength of the rest of the applicant pool that year, only the Admissions Committee can make this determination, and only after seeing the rest of the applicant pool.

So, there is only one way to find out what your chances are: just apply. There is no downside to applying.

I got a [C- in theory, all Fs in one semester with some extenuating circumstances, low score on a component of the GRE]. Does it hurt my chances?
You can compensate for a weakness in one area through demonstrated strength in another. Every application that satisfies the minimum required criteria receives full consideration. The committee consists of actual human beings who take extenuating circumstances into account. If your packet satisfies the minimum required criteria (if you are applying from a non-US school, check the criteria carefully), you should just apply.
Are you taking on new students?
Yes, I am currently taking students, and I do have funding for them. My research interests are described on my home page, and my current research is an extension of what's described there. Once you have applied to Cornell and have been accepted, I'll be delighted to discuss new projects.
I English good. TOEFL below min limit. Can get in???
Must retake TOEFL until score above minimum in each category. Must learn English. Effective communication key to research.
I was forced to take a course on [something unrelated to computer science, say, Baroque and Rococo Art]. I got an F in that course. How would the admissions committee view my case?
To a first approximation, we don't care. If it's an English course, like a writing seminar in English, I might care a bit, but if you've proven elsewhere that you can think and communicate clearly, it's as if the grade does not exist. Don't worry about it.
I was about to get a C+ in a computer science course. I am too proud to have a C+ on my transcript, so I asked my professor to fail me outright with an F, so the registrar would allow me to re-take the course. I spent another semester re-taking the course and ultimately got an A-. How would the admissions committee view my case?

Negatively, as that was a dumb thing to do. You only have four precious years as an undergrad. You should have been trying to take advanced courses and expand your knowledge at every opportunity instead of going through convoluted hoops for the sake of a grade. Professors in my area want to spend their time with people who are eager to discover new algorithms, design novel protocols and build amazing systems no one has yet dreamed of. Re-treading old material is not something the strong students do, as it is at odds with dedication to true discovery and learning.

I advise you not to do this. I advise whoever gave you this idea in the first place to rethink their advice. And I advise your school's administrators to put in policies to avoid this behavior.

How do I indicate on the application form that I am interested in working with you?
Mention in your Statement of Purpose that you are interested in working with me. Also, in the part of the application packet where it asks if you have been in contact with a professor at Cornell, put my name down. You do not actually need to send me further email if you've read this page.
I have a question not answered here. Can I send you email?
Sure. Please make sure that the subject line starts with the string "Prospective:" so I know you've read these pages. Otherwise, I'll just direct you back here.

Prospective Masters Students

I eventually want to get a PhD in Computer Science, but am thinking of first doing a Masters/M.Eng. What do you think?

This is a terrible idea. In certain countries, students are led to believe that they need to first get into a masters program, then enroll in a PhD program for further study. This is not how the system works at Cornell or in the US in general.

If your ultimate goal is to get a PhD, you should enroll in a PhD program. A PhD program typically takes 5-6 years to complete. PhD students are given ample opportunity in their first year to not only take classes in their field, but also to engage in research. They qualify for a Masters degree after completing certain requirements in 1-2 years. They can leave at this point with a Masters, without having paid any tuition (in fact, having been paid a stipend throughout the process). They will know what it's like to work in a competitive research environment, and can choose to pursue their path all the way to a Ph.D.

In contrast, Masters programs are terminal. They are designed to cover a lot of advanced material quickly in a short time span, leaving little time for research. Typically, the costs are borne by the students and not by the researcher. A student wishing to apply to PhD programs at the end of a masters program has to do the entire application process all over again, and likely will have to re-take many of the courses they took as part of their masters.

The only downside to applying to the PhD program is that it is, naturally, harder to get accepted. The standards are much higher for Ph.D. students than for M.Eng. students.

If I eventually want a PhD, does it ever make sense to get a terminal Masters degree beforehand?
There is one circumstance where this may be a wise choice: if your undergraduate institution is relatively unknown, you might find that it is an impediment to placing into a PhD program commesurate with your abilities. In that case, it makes sense to spend a year at a masters program, ideally at a top school, do really well academically, and apply to PhD programs.
I am interested in doing a Masters/M.Eng. and working with you. What should I do?
Apply to our M.Eng. program. The application process is all online and explained very well. I work with a select few M.Eng. students every year.
I am interested in doing a Masters/M.Eng. and working with you. Can you provide a Research Assistantship?
As a general policy, I do not provide research assistantships for Masters/M.Eng. students. I believe no one else in our department does, either; the short amount of time MEng students have to spend on research does not justify the cost of an RA. A limited number of teaching assistantships are available to students who qualify, and you should follow the directions to apply for those. Keep in mind that a Cornell MEng degree pays for itself in just two years after graduation through the higher salary our degrees command.
I cannot decide between a Masters/M.Eng. in Computer Science versus [MBA, Law School, Medical School, or other degree program in unrelated field]. What do you suggest?

Back in 1989, I believed that the greatest potential for a fulfilling career, a positive impact on society, fame and fortune lay in a career in computer science. Back then, we did not know how to build reliable systems. We did not know how to build large scale systems. We did not know how to take advantage of obvious efficiencies through automation. Over the years, I do not believe any of this has changed: witness large companies failing to release working operating systems, the FAA unable to deploy a new air traffic control system, and top-100 websites with terrible uptime, scalability and consistency properties; if anything, the opportunities are even bigger now that the world is better networked than it has ever been. So, for someone like me, the answer is obvious.

For someone else, other considerations will apply, and I cannot offer advice if I do not know you personally.

Prospective Undergraduates

I'm a Cornell undergraduate, took one of your courses and aced it, and want to do undergraduate research with you. Do you have any projects?
I supervise one or two undergrad research projects every year. If you are an über-hacker with a strong work ethic, drop by my office and I'll be glad to chat with you in person.
I am an undergraduate at [non-Cornell] University and would like to spend a summer doing an internship/research assistantship with your group. I have an excellent background and would like to work on [insert relevant topic here]. My expenses will be paid-for from a national fellowship, so there will be no cost to you. Do you have a summer internship position?
Thank you once again for your interest in working with me, but I take undergraduate research interns only from Cornell. In my field, having impact requires building real working systems, which requires time, and even a 6 month internship is not long enough.


I am a masters student at University X (where X is not Cornell). I would like to do my masters project with you and/or I would like you to advise my masters project. Is this possible?
No, not possible, for lots of reasons. I urge you to talk to your friends who went through the educational system and read up on how the degree system generally works.
I am planning to apply for the PhD program, to start in Spring. All of the deadlines and procedures are set up for Fall admission. What should I do?
We do not admit candidates to start in the Spring. Apply to start in the Fall semester, so you'll be synced up with your friends and courses.
I am a prospective student with lots of interesting ideas in the area of [something unrelated to my current research]. When can we talk on the phone and discuss?
I'm sorry but I lack the time to talk about research projects not related to my interests.
Do you speak language X? If so, can I write to you in X? Sizinle Türkçe yazışabilir miyim? Est-ce que je peux vous écrire en Français?
Please stick to English for all correspondance as I find it difficult to discuss computer science in any other language. Besides, it's nice to be able to forward trails of emails to colleagues in case we need to do so.