Information for Prospective Students

Information for Prospective Students

I do research on principled techniques for improving software quality. Primarily this involves designing new programming languages, type systems, or logics for reasoning about programs, that make it easier to write code correctly and/or check that it's right once you're done; then I use them to analyze or build real or realistic systems to validate that what was done was actually useful. I'm also generally interested in how these tools are adopted in practice, both for general understanding and for informing work to improve the real-world utility of verification tools.

I'm looking for motivated, curious students to do research with me, at all levels (undergrad, MS, and PhD). Most of this page is focused on prospective PhD students, but there is some information specific to undergraduate and MS students as well.

A Note on MS Students

Please note that like most US-based faculty, I generally do not fund MS students, for a variety of reasons well-explained by my own undergraduate thesis advisor. Moreover, I have no involvement or control over MS admissions.

What Is a PhD?

Many students are curious about what exactly a PhD entails, and what is different between a MS and a PhD. These are great and subtle questions which take some time to answer, and touch on a number of subtleties that are not obvious the first time you think about this. Fortunately my own undergraduate advisor has written an excellent overview: Getting a Computer Science PhD in the USA. This also touches on aspects of doing a PhD in the US vs in other parts of the world (where things work a bit differently), and directly discusses the question of funding for a PhD in CS, the short version of which is that you are paid to do a PhD in CS (and most STEM fields, sometimes directly for research and sometimes for working as a graduate teaching assistant), and that you should never accept an offer that does not include funding. If you're still exploring what a PhD is, exactly, you should start with that overview.

If you're a current Drexel CS or SE student I'm happy to chat with you about these things in more detail, though I'd ask that you read that overview as background before we chat.

If you're looking to apply to work with me for your PhD, you're welcome to reach out to talk about what that might look like, but I'd strongly encourage you to read that overview regardless, as it is broadly applicable.

Advising Philosophy

I want to do good research, but I also want to help students achieve their own goals. I like to find research projects that combine student interests with mine.

One of my great grand-advisors, Nico Habermann, was known for saying:

Focus on the students, since graduating great students means you'll produce great research, while focusing on the research may or may not produce great students.

This approach percolated through his students and their students, and I intend to follow it myself. There are much better ways to train a PhD student than trying to clone yourself.

I do have a few more specific points that I follow:

My Expectations for You

I expect any student working with me on research, at any level to:

What You Can Expect From Me

Many people, at every level, tend to forget that a research advising is not just a privilege for the student, who may receive a range of benefits depending on their position (PhD students in STEM disciplines receive a modest but livable stipend in addition to having tuition paid for; co-op students are paid; and independent study students get credit for more targeted learning). Advisor-advisee research relationships are also a commitment made by an advisor (or advisors) to mentor the student.

Below are some concrete things you can expect from me (which is certainly not comprehensive). Some of these might seem so obvious that writing them is silly, but after you've heard some PhD horror stories, it might be more obvious why I'm bothering to list some of these.

Research Style

Most of my research involves building proof-of-concept tools: language implementations and analysis tools. Generally the format for this is:

  1. Identify a problem whose elimination seems amenable to static verification or whose likelihood could be diminished or eliminated with new programming constructs.
  2. Design a new analysis or language feature to avoid or completely prevent the issue in question. This might include doing proofs that the checks we propose guarantee the property we want (e.g., that a type system ensures data race freedom).
  3. Implement it.
  4. Try it on real code, port examples of real code, or build realistic systems using new techniques, as appropriate.
  5. See what worked and what didn't. Jump back to step 2 if necessary. Write up what worked and what didn't.

Of course, this is biased strongly towards a certain class of tool development. For other interests, like how formal methods are or could be applied in practice, or considering new approaches to informing design and evaluation of these techniques, other approaches are necessary (and I've done some of that, too).

Prospective PhD Students

If you're a prospective PhD student, please see our department's page on PhD admissions.
PhD students are admitted to Drexel through a department admissions committee, who notifies faculty of possible matches.
If you say you're interested in programming languages, concurrency, program verification, formal methods, or compilers, I'm likely to hear about it.

If you want to know more about my specific research interests, take a look at my publications. These of course are snapshots of research that's already done, and there's more that doesn't show up there yet.

Advice for Getting In Touch

If you want to discuss whether we might have common research interests, email me. I'd love to hear from you! But you should have something more substantial to say than ``do you have funding for me?''

Generally, I'd like to get a sense of whether you're ready for a PhD (both, do you have reasonable preparation, and do you know what you're getting yourself into), and whether I'd be a good advisor for you (are we interested in the same things, and would we work well together). If you get in touch and provide no information relevant to these points, I'm unlikely to respond.

Here are some things that are very helpful to me in an email:

The key things I'd be looking for in any emails are evidence that you:

  1. Are genuinely interested in a research area I'm interested in
  2. Have some idea what's involved in research (in general)
  3. Have some idea what research in a relevant area is like
  4. Are generally well-suited to succeeding in a PhD program
    • This is vague, but generally corresponds to possessing a mix of (among other things) curiosity for one or more general research areas, motivation to both learn and do, and the ability to perservere when something gets frustrating for some period of time.

You don't need to check all those boxes (and those aren't all the boxes to check), but if you check none of them it's generally an indication that you're not ready for a PhD. I get many such emails. I also get a lot of emails with red flags. Here are some things I commonly hear in emails about PhD admissions, which people seem to believe are helpful, but are actually uninformative or definite negatives for me (and for most professors):

Many professors, including me, will ignore emails that have red flags like these. We'll read them to make sure we're not misinterpreting them, but we generally won't respond. Like many professors, I used to spend a lot of time writing careful explanations of why the letter suggested that I would not be a good match for them. After a dozen or so instances of applicants replying back to tell me that I was wrong about my own research, I stopped. If the letter has red flags but reflects a genuine personal interest in working with me, I'll likely still try to reply with something helpful.

Undergraduate and Masters Students

If you're already at Drexel, and interested in my research, send email to schedule a meeting to talk. If you're not already admitted to Drexel, individual faculty can't help with that: admissions are managed centrally by committees at the department/college/university level.

Ideally you would have taken (and done well in) courses on at least one of the following:

If you haven't taken any of those it's not a deal-breaker, but it also means you might not know what you're getting into.

Be prepared to hear, "No." It is possible that you don't have sufficient background for the projects I'm actively working on. If you're looking to work on a particular topic, it might not be something I'm knowledgeable about, which would make me a poor research advisor for that topic. If you're looking to work on a particular style of project, but I'm not working on something like that at the moment, I may not have the bandwidth to start such a project. In general, undergraduate research only works when both parties are going to gain something. So there needs to be a project that I'm qualified to advise and have time to advise, on a topic you're interested in learning about that requires work you'll generally enjoy. The expected benefit to you should be getting to work on something new, interesting and exciting (to you) that you wouldn't otherwise see in a class, and to have some flexibility to do something open-ended (the details of this will vary between projects). The expected benefit on my end should be getting some help on the research my graduate students and I are doing, as well as the satisfaction of working with a student more directly than teaching a class.

Generally I'll take on BS and MS students either as an outside activity (on top of courses) or in some cases for credit as an independent study. Note that for independent studies, the university requires several hours a week of meeting time, so there's a limit to how many of these I can do each term. For undergraduates, I'm also open to research co-ops.

As I mentioned above, I generally don't fund MS students. Please do not email me during application season asking if I have funding for MS students.

Early Undergrad, Thinking About Graduate School?

If you're an undergraduate thinking about graduate school, one of the best things you can do is get involved in research, ideally locally, or alternatively taking advantage of programs like the NSF's Research Experience for Undergraduates to get a taste. This will help you figure out if you actually enjoy research, and if you do you'll have someone to vouch for you in a letter of recommendation. Do this on the early side, if possible: to go straight from undergrad to a PhD, you need to submit applications in the fall term of your senior year.

If you're not sure about getting involved in research, send me email. I'm always happy to chat about what research is and how it relates to the industry jobs most CS and SE students are preparing for. You don't even need to be interested in my research area in particular, if you're just interested in hearing about research and grad school in a broad sense.