Biography

I am an associate professor in the Department of Computer Engineering at Santa Clara University. I started teaching at Santa Clara in the fall of 2000. Prior to that I was an assistant professor for one year at Clark University in Massachusetts in the Department of Mathematics and Computer Science.

I am also associate chair of the department, with responsibility for undergraduate programs, including events for incoming students such as open house weekend, preview day, and orientation. I am also acting chair of the department during the summer, as well as the faculty advisor for Upsilon Pi Epsilon, the computing honor society.


I received my Ph.D. in Computer Science in 1998 from the University of California San Diego in the Department of Computer Science and Engineering, working with Bill Griswold. (Tao Xie has put together a nice academic family tree for software engineering. You’ll find me under Dijkstra.) I also received my Master’s and Bachelor’s degrees from the same institution. (What can I say, except that I’m a native San Diegan and it’s a great place to live.)

While a graduate student, I worked for the department as a system administrator, maintaining faculty and graduate workstations. As an undergraduate student, I worked in a digital image processing lab at Scripps Institution of Oceanography, writing systems to analyze and visualize satellite oceanography images. (These positions, along with Linux hacking at home, have given me a lot of practical experience.)

My general research interests are in the areas of software engineering and compilers. More specifically, I focus on the intersection of those two areas: static analysis tools, which include program slicing tools, call graph extractors, and refactoring tools. I am particularly interested in the development of ad hoc and approximate algorithms that can be used to successfully analyze large software systems written in the C language. I also like to study data structures and algorithms, especially the trade-offs between performance and elegance of design.

I usually teach courses related to all of these areas: software engineering, compilers, data structures, and programming languages. My math background is not too bad, having done half of my undergraduate electives in math, and I have taught graduate classes in probability and linear algebra.

Valid XHTML 1.0 Strict Valid CSS!