Research positions

For anyone interested in graduate school in computer science or other science/tech fields, I recommend reading this advice on how to prepare (which includes advice on how to catch the attention of potential advisors such as me) from Mor Harchol-Balter, Andy Drucker, and Matt Might.

For postdoc applicants: I currently have no funding for postdocs.

For Ph.D. applicants: I am in the Computer Science department, and I am a member of the draduate groups in Applied Mathematics and Biomedical Engineering, so I am able to supervise Ph.D. students in any of these programs.

A word of warning: professors get a lot of emails asking about research positions. Most of these are mass-emailed form letters and are ignored. Even if yours is not, it's a good idea to understand how to make it stand out so it doesn't look like a mass-emailed form letter.

I don't expect a prospective student to have read all of my papers or solved open problems from them. I do, however, expect a prospective student to know

I'm much more likely to respond to emails that are clear on at least these two points. Of course, if you have an idea for a problem to work on, or an idea for how to attack an open problem from one of my papers, or any paper in my field, do feel free to talk about that!

But otherwise, it's a good idea to talk about a creative project you've worked on, preferably outside of class (or that started in class but continued far beyond the expectations for a good grade), something that you are proud of, and how you think it demonstrates that you might have what it takes to do mathematical research. Ideally, this will be a previous research project in theoretical computer science, but not necessarily.

Finally, note that I teach a course on the Theory of Molecular Computation (previously it was ECS 289A, a seminar course, but now it is ECS 232). Its only prerequisite is undergraduate theory of computing, or similar rigorous mathematical background (e.g., a proof-heavy math course such as graduate Real Analysis). One way to catch my attention is to work on some of the homework problems in that course and show me your solutions. I picked those problems to be representative of the sorts of things we think about doing theoretical research in my field, so this is not just a way for me to evaluate a student, but for the student to evaluate me: to determine if research in my field would be interesting to them. (If you don't enjoy working on those problems, it's unlikely you would enjoy doing the sort of research we do in my group.)

For MS students: I typically do not attempt to recruit MS students to come to UC-Davis, and in particular I don't tend to make funding offers. However, I often have research projects in my group for MS students already at UC-Davis and may have research grants to support such students, but I would need to spend time working with such a student (perhaps on a research project) or interacting with them (perhaps because they took a graduate course and stood out as an excellent student) before offering research funds. If you are an MS student and are interested in my research (whether you are at UC-Davis yet or not), please contact me. The advice for both Ph.D. students above and undergraduate students below applies.

For UC-Davis undergraduate students interested in research: The advice to Ph.D. applicants above applies. Additionally, since you're already at UC-Davis, note that I occasionally teach a course on my research, ECS 289A: Theory of Molecular Computation. Taking this class is a good way to learn about foundational research in my field and can be the start of a research project. For instance, a student once got so interested in Optional Problem 5 in this homework, solving the homework problem, then improving the solution, generalizing it, wondering how far it could be extended, until he eventually turned it into this paper, which was published in PODC, the leading conference on distributed computing. It all starts with following your curiosity as far as it takes you!

I also frequently teach ECS 220, graduate Theory of Computation. It is less directly related to my research, but it's still a good course to take to see what sort of problems I find interesting (and to demonstrate to me your problem-solving skills).

For undergraduates, timing is an important issue: most research projects take a while, and a single quarter or summer is not enough time to complete it. Rather, it's enough time to start it, and you might spend the whole next year actually getting the results and writing a paper. So it's best to look into this before your final year.