I am always interested in working with motivated students on challenging research problems. Please read this post before reaching out to me. I first list some general advice applicable to all students, and then list advice for specific classes of students.

For all students

When contacting me, please include a CV listing your educational qualifications, prior research experience (if any), links to any code you have written, and a list of software you are familiar with; see here for a list of software we use in our research.

Including just a CV in the email is not enough; I tend to ignore generic emails from students asking to work with me. Go through my research projects and publications, and include a description of how your interests and background align with my research. You can also try building and running the open-source tools developed by my group that are available on GitHub.

For undergraduate students at UC Davis

Consider taking ECS 140A: Programming Languages with me. Sophomore year is the ideal time to start an undergraduate research project; often that is too early for some students to take ECS 140A due to the prerequisites for the course. The following upper-division courses are also closely related to the research I do:

When contacting me, include your transcript and/or a list of the above courses that you have completed.

Once we agree to work together, you need to sign up for 3 credits of ECS 199: Special Study for Advanced Undergraduates; this usually translates to approximately 10 hours per week. More information about ECS 199 can be found here.

For MS students at UC Davis

Consider taking ECS 240: Programming Languages with me. Once we agree to work together, you need to sign up for 3 credits of ECS 299: Research.

For prospective Ph.D. students applying to UC Davis

Please contact me once you have completed your application to UC Davis.

Unless explicitly advertised on my home page, I do not have internship opportunities for high-school students or undergraduate students from other schools.