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 at the bottom of the page.

Please note that like most professors, I generally do not fund MS students, for a variety of reasons well-explained by my own undergraduate thesis advisor.

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:

  • I will get you started on research. I will help you get moving on research quickly, so you can hit the ground running.
  • I want to work on things you find interesting, too. Related to the general philosophy above. We should work on things both you and I are interested in, not things only one of us cares about.
  • I want you to explore (some) side research projects. Having breadth as well as depth is good for you: you end up with a wider repertoire of techniques and background knowledge. (And if your side projects result in publication, that breadth looks good on a job application.)
  • I will _not_ hand you a dissertation topic. Some advisors give you a dissertation topic the first day you show up. I am not one of those advisors. A PhD trains you to become an independent researcher, capable of not only doing research, but choosing research directions on your own. I believe that if you cannot choose or find your own dissertation topic, then you have not yet attained that goal. I won’t abruptly transition from hand-holding you as a new student to expecting you to fly solo, but I will gradually push you to select more and more of your research direction on your own, if that doesn’t start to happen naturally.

My Expectations for You

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

  • Be genuinely interested in the research you’re doing, and tell me if you’re not. If you’re not interested in what you’re doing, we should talk about whether it makes sense or is feasible for you to switch to another project. The best work is done by people genuinely interested in learning about the topic, and disinterested people generally do poor research. When you get in touch with me about doing research, the first things we’ll discuss are your interests and goals, and that’s the basis for getting you started.
  • Be committed to working on the research. This doesn’t mean working 80 hour weeks (PhD) or failing classes to accomplish research (all levels) or anything absurd (and abusive!) like that. But it means I expect you to consistently set aside time to work on research, appropriate to your level of involvement (whether as an independent study, co-op student, or PhD student).
  • Be open and honest about research progress. If you’re not making the progress you think you should be, I need to know. If there are technical hurdles, there is likely something I can help with. If you’re having trouble managing your time and other obligations, we can talk about it and/or adjust plans to account for it. Don’t sit on a problem for 3 or 4 days — I have email and a walkable office for a reason :-)
  • Be mindful of what you know and don’t know, and willing to learn. Research is a humbling experience. There’s a reason people say at the end of a PhD, you think you know nothing — there’s a lot to learn! I’m still learning! And you should expect to spend a fair amount of time learning as well.

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.

  • I will give you guidance on your research.
  • I will read your paper drafts, give feedback, and help write as appropriate (note that late-stage PhD students should be mostly writing their own papers).
  • I will help you improve your academic writing and your research.
  • I will keep my comments constructive and helpful. I will be frank when something is insufficient, not ready for submission, or has an important technical flaw that needs correcting. But I will make every attempt to make my critiques actionable, providing not only critique but guidance on how to address the critique. If it is a mistake, I will give advice on how to avoid repeating the same mistake (and I’ll be understanding if you do it again, since I’ve certainly repeated mistakes).
  • If you disagree with me on a technical matter, I will listen, and consider your argument on its merits. After all, if I didn’t think you were capable of thinking clearly about technical matters, I wouldn’t have brought you on for research.
  • I will give a crap about your well-being. (This goes for everyone, but the details are most relevant to PhD students.) PhD studies are time-consuming and intensive; if you’re expecting a 9-to-5 job where you go home and don’t think about anything, you’re probably embarking on the wrong journey. A PhD is an apprenticeship of sorts, and the workload is variable (sometimes less than a 40-hour week, other times more, and sometimes our best ideas come at odd hours). But I don’t want to overwork you. You need to sleep. You need to take time to recharge and refresh. You need time for hobbies. These things keep you healthy, which is critical for its own sake, and on top of that will likely make you more productive. I’m fortunate enough to work in a domain where nobody needs to come into the lab at 3am to pipette things for an hour. I’m not the type of advisor to get upset if I hear you did something cool over the weekend or went to a concert last night instead of pounding away at research. Leisure time is healthy, and you should use it as you please (and the details are none of my business, if you don’t want to share). That said, you’ll still be expected to make timely progress on research (with my assistance).

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:

  • “I looked at your paper X, and was wondering…” This shows me you’re interested enough to care about what I’m working on, and interested enough to work through the paper yourself. It means you also have some idea what you’re getting into, because you’ve looked at the details of my research. Even if you’re asking questions about what you didn’t understand, or asking questions that are evident in some other paper you may not have read, this is a good sign.
  • “I’m interested in / I have worked on X, which seems somewhat related to your work on Y.” Again, this shows you have interest in my work specifically, and have some idea what might be involved.
  • “I’m generally interested in area X, and you’ve done some work on Y, and I’m trying to figure out what working on that would be like.” This shows a genuine interest in both my work and making sure you’re looking at doing a PhD with a good advisor match. Even though it may turn out that the research I’m interested in isn’t exciting to you, I still think it’s worth my time to talk to you. You don’t need to pretend to know my research interests are perfectly aligned with yours; it’s okay to be uncertain, and to seek more information.

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):

  • <Insert form letter sent to 300 professors>. Often these form letters do not even mention my name, or worse, mention the name of another professor at another institution. A significant fraction of these include signs they were sent by an automated service rather than an individual. Most professors find this mildly insulting and ignore such emails completely. If someone tells you to do this, they’re giving you bad advice. If you’re tempted to pay for this “service,” then you’re literally paying to hurt your admissions chances.
  • “I am excited about doing research in X” where X is an area I have no expertise in. Often for me, this X is instantiated to “user interface design.” This makes it clear you did a keyword search on something you knew about in .edu domains, and emailed everyone who came up. It also makes clear that you didn’t actually check that my JavaUI paper was about avoiding concurrency bugs in UIs, not about UI design. If you pay so little attention to an advisor match, this suggests that you’re unlikely to do careful research. This category often (but not always) overlaps with the form letter group — another good reason not to do that.
  • “I love programming” (often, the word “passion” is worked in there). This is not helpful to me. It’s good that you like to write code, as the sorts of research I’m interested in generally require doing a fair bit of that. But it provides no indication of whether you’d be a good PhD student. I know many people who love programming, but would be miserable in a PhD program.
  • “I’m looking to get involved in research. [without mention of why]” If you’re thinking of writing this line in an email, stop and consider why you’re applying to PhD programs. Research is often a long, slow, frustrating process filled with rejection (i.e., paper rejection) at regular intervals. It requires taking a great deal of technical criticism with grace. If you’ve never done research before, and you don’t have any other exposure to research (such as collaborating closely with researchers while working in industry), embarking on a 5-7 year journey towards a PhD might be a bit premature.

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:

  • Programming languages (e.g., CS360 or CS550)
  • Operating systems
  • Compilers
  • Software assurance (e.g., SE320 or CS/SE576)

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.