Undergraduate Study M.I.T. (1978-1983); Research Staff, MIT Lab for Computer Science (1980-1983); Member of Technical Staff, Symbolics Inc. (1983-1984); Member of Research Staff, Xerox PARC (1984-1999); Manager, Software Design Area, Xerox PARC (1992-1999); Principal Scientist, Xerox PARC (1996-1999); Professor, University of British Columbia (1999-); Xerox/Sierra Systems/NSERC Software Design Chair, UBC (1999-).
My research is directed at enabling programmers to write programs that, as much as possible, look like the design. My belief is that programs that clearly express the design structure they implement are easier to maintain, because questions about what a part of the program does, why it does that, and what other parts of the program depend on that behavior become easier to answer.
In pursuit of this goal, most of my research has been in programming language design and implementation, but I am also interested in programming environments, design and coding styles, and software engineering principles.
A key theme underlying my work is mechanisms that support crosscutting program modules. These are units of code that deliberately cut across each other's modularity boundaries. My belief is that this kind of modularity, when grounded in proper principles, can make complex systems significantly easier to develop and maintain. The goal of my work is to discover these principles and the mechanisms that can support them.