Skip to main content.


The thread that runs through my work is understanding how we understand and gain confidence in software, through some combination of analysis (broadly construed to include testing as well as various static checking techniques) and design. I'm increasingly interested in interplay between synthesis (generating something from a spec) and analysis (checking consistency between a spec and an implementation). The synthesis part is related to an old interest in architectural design of software, which I've recently revisited in connection with assistive cartography.

Some things I've been interested in recently:

  • Serializability at the program level. I've been looking at this for a while with my colleague and ex-student LihChyun Shu, and more recently with Yannis Smaragdakis, Reimer Behrends, and Tony Kay. Atomicity and transactions have become a hot area in programming languages, so the low-hanging fruit is probably gone, but there are still plenty of problems that need solving.
  • Exploiting static information (e.g., class hierarchies) in mining putative invariants from instrumented programs (“dynamic invariant detection”); Yannis Smaragdakis and I are building on an idea that grew out of the dissertation work of Christoph Csallner, now at U.T. Arlington.
  • Flow analysis as Swiss army knife, including applications that are about architectural structure (and nothing to do with "data flow" per se): GenSet and an application to reverse engineering.
  • Leaving a bit of instrumentation in deployed code to check the implicit assumptions made in testing: Residual test coverage measurement
  • Assistive cartography. I'm working with Amy Lobben and Andrew Marcus in the Spatial and map cognition research lab. Our current project, funded by National Institutes of Health, is to design, build, and evaluate a minimal GIS for as an aid to teaching spatial thinking. In one regard, assistive cartography is a completely new turn, my first stab at research in an application domain. In another regard, though, it's a natural extension of my long-term interest in architectural design of software. While I'm having a blast learning about cartography, perception, and assistive technology for blind users, my research is directed to enhancing creative exploration of the assistive cartography design space by cartography researchers.
  • Internationally distributed projects, and the interplay between software architectural design and the organization of work. Stuart Faulk and I are designing a distributed software engineering project course for Spring 2010, co-taught at Peking University by Professor Lian Yu. Our work is supported by the National Science Foundation (CPATH program) and our collaborators include include David Weiss of Iowa State, Lian Yu of Peking U., and Cindy Brown at Portland State University.

    Book: Software Testing and Analysis

    Mauro Pezzè and I wrote Software Testing and Analysis: Process, Principles, and Techniques. It is available at Amazon and other online bookstores, including Powells and Barnes and Noble. German and Portuguese translations are also available.

    We hope this will be the book that advisors recommend to new graduate students who need a basic, broad background in testing and analysis, as well as a standard text in senior and beginning graduate courses.

    We appreciate the useful comments (and corrections!) from many of you, and are pleased that the book is in use around the world and in some of the top centers of software engineering research.

    Score 2011

    SCORE 2011 with ICSE 2011 in Hawaii. ICSE 2011

    Registrations for SCORE 2011 from around the world exceeded our most optimistic projections. Finals will be held at ICSE 2011 in Hawaii. A repository of previous SCORE projects (currently, from 2009) is also available, and may be useful to those teaching project-oriented software engineering courses. Matteo Rossi of Politecnico di Milano and I chair SCORE 2011.


    ACM SIGSOFT 2006 / FSE 14, November 2006

    ACM SIGSOFT 2006, the Fourteenth ACM Symposium on Foundations of Software Engineering (FSE 14) was held in Portland, Oregon in November 2006. I was general chair, and Prem Devanbu of UC Davis was program chair. See for more information.


    Impact Project

    The Impact Project is an ACM SIGSOFT initiative to determine the impact of software engineering research on software engineering practice. I am studying the historical development of static analysis techniques and tools for software fault detection.


    Software Methodology (CIS 422/522)

    Winter 2007

    Software Methodology 2 (Spring 2007)

    This course will be cross-listed as CIS 423 and CIS 510. CIS 610 credit is possible for students who need 6xx credits and who are able and willing to contribute at that level.

    For Spring 2007, the course will also be cross-listed as a Geography seminar taught by Amy Lobben. Amy and I will work together coaching a cross-disciplinary team of computer science and geography students to develop a web-based haptic soundscape campus map for blind users.

    This is going to be a blast. There are lots of interesting and challenging problems, and a chance to work across disciplines (which is a really important aspect of computing in the real world), and a chance to build something new and useful. This won't be the first haptic soundscape map (check out related projects at UC Santa Barbara and U Calgary), but the field is really nascent and presents lots of opportunity to make real progress.

    Compiler Construction (CIS 461/561, Winter 2007)

    For notes on the most recent offering, see the course web site from Spring 2006.

    Scientific Writing Workshop (CIS 610)

    Sarah Douglas will offer the writing workshop course in Spring 2007. We expect to have a regular course number soon, and a new course title, pending University approval.

    K-12 Outreach

    I'm involved in a number of (somewhat overlapping) groups concerned with helping high school and middle school kids learn about computer science and prepare for it.

    The ETIC Computer Science task force focuses on attracting and preparing high school students for university study in computer science. They publish the Get Real web site for high school students, teachers, and counselors.

    The Oregon Pre-engineering and Applied Sciences Initiative (OPAS) has a related but broader focus on engineering, computer science, and applied sciences in general. I serve on the OPAS steering committee and one of the working groups, and am involved in the NOISE (Network of Informal Science Educators) spin-off activity.

    The Oregon Computer Science Teachers Association (CSTA) is primarily an organization of high school computer science teachers, supported by the Software Association of Oregon. I participate in some events and discussions as a representative of university CS education.

    Outside interests

    I am a fairly serious coffee drinker, and also roast coffee at home. Here is some general information on semi-commercial espresso machines (high-end home machines) and some information on the Pasquini Livia 90 in particular. Recently I have discovered a espresso repair service in the Eugene area, Stefano's Espresso Care. Stefano (stress on the first syllable; I keep getting it wrong) repairs both commercial and home machines. Previously I was shipping my machine back and forth to HER in Seattle.

    I am a recreational bicycle rider. I enjoy organized "event" rides. Rides I've enjoyed include the Seattle to Portland bicycle classic (one day version in 2004 and 2005); the Blackberry bRamble starting right here in Eugene; the Covered Bridges tour from Albany (5 times); the Peach of a Century (3 times); the Monster Cookie metric century; the Mount Hood Challenge Century (which seems to have been held for the first and last time in 2004); and the Torture 10,000 century east of Portland (also discontinued, alas).

    Highlights of some prior years:

    In 2011 I hope to complete a brevet “series” of 200k, 300k, 400k, and 600k. Update: Done! I completed the Grab Bag 200km brevet Feb 5, the 300km Three Capes brevet March 26, the 400km Eden's Gate brevet April 16, and the Oregon Coast 600 May 7-8, 2011.

    Other great rides in the area:

    There are many excellent routes starting in or near Eugene, ranging from under 20 to over 100 miles, and from very flat to quite hilly. If you are a cyclist visiting Eugene (especially if you're a computer scientist), I'd love to make a few suggestions or maybe go out on a ride with you, schedule permitting.

    Here is why I always wear a helmet.