I am interested in techniques that make it easier to build reliable software that meets its specifications - this requires that you write specifications of course.

Resources

With colleagues I have developed resources to support research activities by the broader community. Several of them are linked below:

Publications

Other people keep track of the papers I've published, but it usually takes some months for these sources to be updated. If you are interested in a recent paper send me an email.

Research Philosophy

There are many great books on the research process that can help shape one's approach. I won't attempt to point them all out, but I'll mention one that I found early in my career.

The Incomplete Guide to the Art of Discovery by Jack Oliver distills lessons from a long and impactful career in research (on plate tectonics). It is full of many great suggestions, but the cautionary tales related to the failure to look for and at the big picture made an impression on me. For instance, the tendency to "ignore the big opportunity and cautiously probe in detail the next obvious small element of the frontier" of a discipline, the risk that you "become ... captivated by the intricacies and challenges of ... day-to-day activities" and get stuck in a "science eddy", and the temptation to "follow the crowd". Falling prey to these, which is all too common, leads to a scientific career comprised of collecting "crumbs".

Oliver is not alone in making these observations. During the COVID-19 pandemic my wife read John Barry's The Great Influenza and shared a number of interesting insights with me. Barry quotes Oswald Avery's advice to young researchers saying that most "go around picking up surface nuggets, and whenever they can spot a surface nugget of gold they pick it up and add it to their collection". Oswald clearly values the approach of the few other researchers who are "much more interested in digging a deep hole in one place, hoping to hit a vein" and thereby "make a tremendous advance."

There is no one way to be succesful as a researcher and you need to find an approach that employs your personal strengths, that is sustainable over the long haul, and that makes you happy. But remember that your strengths are not fixed and just as you can develop and add new technical competencies, so too can you build your knowledge of strategies, tactics, and practices that will help you to be a succesful researcher.

Students

One of the best parts of my job involves working with bright, motivated students. I learn at least as much from them as they do from me. Here are two interesting explanations of what a PhD education is all about from quite different perspectives. I felt both the grind, explained by Philip, and the inspiration, that is implicit in Matt's explanation, in my education. My aim is to minimize grind and maximize inspiration for my own students; some grind is unavoidable (i.e., research is hard or someone would have already done it).

Current Students

Graduated Doctoral Students

  1. Soneya Binta Hossain PhD 2025 (Assistant Prof. at University of Texas at Dallas)
  2. Will Leeson PhD 2024 (Assistant Prof. at St. Olaf College)
  3. Dong Xu PhD 2024
  4. Swaroopa Dola PhD 2023 (co-advised with Mary Lou Soffa, at the Biocomplexity Institute)
  5. David Shriver PhD 2022 (co-advised with Sebastian Elbaum, at the SEI)
  6. Mitch Gerrard PhD 2021 (at CEA-List)
  7. Haitao Zhu PhD 2013 (co-advised with Steve Goddard, first job with Lemko Corporation)
  8. Elena Sherman PhD 2012 (Assoc. Prof. at Boise State University)
  9. Du Li PhD 2012 (co-advised with Witawas Srisa-an, at ByteDance)
  10. Jiangfan Shi PhD 2012 (co-advised with Myra Cohen, founded Dragon Testing)
  11. Rahul Purandare PhD 2011 (Assoc. Prof. at University of Nebraska)
  12. Suzette Person PhD 2009 (retired as Full Prof. of Practice at the University of Nebraska-Lincoln)
  13. Oksana Tkachuk PhD 2008 (at Amazon AWS Security)
  14. Robby PhD 2004 (Full Prof. at Kansas State University)
  15. Corina Pasareanu PhD 2001 (at Amazon Prime Air)

Community Service

I believe that the field of software engineering develops most effectively when people build on each others work through a cooperative, rather than a competitive, process. I work to support that process by helping to organize and run meetings and journals where people can report on and share their work.