Research Interests

Human-centered software development: learning unfamiliar code, retaining institutional memory.

Programming languages: type theory, type state, linear types.

Software engineering: software architecture, architectural description languages, design guidance.

Human-computer interaction: user interface design tools, information visualization.

Education

PhD 1999, Carnegie Mellon University.
Dissertation with advisor Mary Shaw: Resolving packaging mismatch. Thesis committee: Mary Shaw (chair), David Garlan, Daniel Jackson, Gregor Kiczales (Xerox parc).

MS, BS with high honors 1993, University of Virginia.
Master's thesis with advisor Randy Pausch: Alice: A rapid prototyping system for three-dimensional, interactive, graphical environments.

Professional Experience

Research

Microsoft Research, Redmond, Washington.
Senior Researcher and manager of the Human Interactions in Programming group. 2006-present. Created light-weight code annotation tool, JotNet, with Gina Venolia and Kael Rowan.
Researcher in the Software Improvement Group under Jim Larus. Created Software Terrain Maps and , with Mary Czerwinski, Brian Meyers, Gina Venolia, Steven Drucker and George Robertson, created Code Thumbnails, both for navigating source code using spatial memory, 2005-2006. Created, with Mary Czerwinski and George Robertson, the Team Tracks recommendation system for learning unfamiliar code. Created, with Mike Barnett, Manuel Fähndrich, K. Rustan M. Leino, and Wolfram Schulte, the Spec# static verifier for C# with pre- and postconditions and object invariants in first-order predicate logic. 2003-2005. Created, with Manuel Fähndrich, the Fugue typestate checker for .NET languages, 2002-2004. Created, with Manuel Fähndrich, the Vault programming language, which integrates interface protocol checking with type checking. 1999-2002.

Carnegie Mellon University, Pittsburgh, Pennsylvania.
PhD candidate with advisor Mary Shaw. Classified current techniques for resolving a class of system integration problems, called packaging mismatch, and created a new technique to separate software components' computational and interaction concerns (dissertation research). Created a direct-manipulation-style graphical editor for the UniCon architecture description language. 1993-1999.

Digital Equipment System Research Center, Palo Alto, California.
Intern with host Hania Gajewska. Created an email-based answering machine service for the Argo video teleconferencing system. Summer 1994.

Xerox Palo Alto Research Center, Palo Alto, California.
Intern with host Jock Mackinlay. Created two calendar-based, three-dimensional visualizations for the Information Visualizer system. Summer 1993.

University of Virginia, Charlottesville, Virginia.
MS student with advisor Randy Pausch. Created the first version of the Alice rapid prototyping system for interactive, three-dimensional graphics, 1992-1993. As an undergraduate, helped design and implement the Simple User Interface Toolkit (suit) for creating traditional windows-based user interfaces, 1990-1992, and implemented the Simple Raster Graphics Package (srgp) for ms-dos for the textbook Computer Graphics: Principles and Practice by Foley, van Dam, Feiner, and Hughes, 1990.

Teaching

University of Washington, Computer Science and Engineering Department.
Affiliate professor. Redesigned and taught CSE 503, a graduate course in Software Engineering, with an emphasis on formal methods and software design. The course is one of the qualifying courses for the department's M.S. and PhD. programs. Spring quarter, 2004. [course web site]

Carnegie Mellon University, Eberly Center for Teaching Excellence.
Eberly Center Teaching Fellow: The Center's Teaching Fellow program has selected eleven accomplished graduate student instructors to advise graduate and undergraduate student instructors on their teaching. Evaluated and provided feedback to student instructors through classroom observation, videotape review sessions, and microteaching workshops. 1998-1999.

Carnegie Mellon University, School of Computer Science.
Computer Science Department Teaching Fellow: The Department's Teaching Fellow program encourages exemplary CS PhD students to pursue significant teaching accomplishments. Designed and taught a graduate course, with Professor Mary Shaw and Shawn Butler, on engineering software for critical system properties like safety, security, and reliability. 1998-1999.

Carnegie Mellon University, School of Computer Science.
Ph.D. student. Founded and lead a reading group in software engineering (http://www.cs.cmu.edu/Groups/software-eng/serg), 1996-1997. Teaching assistant for a course on introductory programming with Professors Robert Harper and Daniel Jackson (Spring 1996) and on software engineering with Professor Daniel Jackson (Spring 1995).

Xerox Palo Alto Research Center, Palo Alto, California.
Intern with host Gregor Kiczales. Designed a half-day tutorial on a technique for designing systems that allow their clients principled control over chosen aspects of implementation. Summer 1995.

University of Virginia, Department of Computer Science.
Undergraduate representative to the Computer Science Curriculum Committee. 1992-1993.

Publications

Refereed Journals

James R. Larus, Thomas Ball, Manuvir Das, Robert DeLine, Manuel Fähndrich, Jon Pincus, Sriram K. Rajamani, and Ramanathan Venkatapathy. "Righting Software." IEEE Software 21(3):92-100, May/June 2004.

Robert DeLine. "Avoiding packaging mismatch with Flexible Packaging." IEEE Transactions on Software Engineering 27(2):124-143, February 2001.

Mary Shaw, Robert DeLine, Daniel Klein, Theodore Ross, David Young, and Gregory Zelesnik. "Abstractions for software architecture and tools to support them." IEEE Transactions on Software Engineering 21(4):314-335, April 1995.

Randy Pausch, Matthew Conway, and Robert DeLine. "Lessons learned from SUIT, the Simple User Interface Toolkit." ACM Transactions on Office Information Systems 10(4):320-344, October 1992.

Refereed Conferences and Workshops

Andrew J. Ko, Robert DeLine, and Gina Venolia. "Information needs in collocated software development teams." In Proceedings of International Conference on Software Engineering (to appear), May 2007.

Mauro Cherubini, Gina Venolia, Robert DeLine, Andrew J. Ko. "Let’s go to the whiteboard: How and why software developers draw code (to appear)." In Proceedings of SIGCHI 2007, April 2007.

Robert DeLine, Mary Czerwinski, Brian Meyers, Gina Venolia, Steven Drucker, and George Robertson. "Code Thumbnails: Using spatial memory to navigate source code." In Proceedings of the IEEE Symposium on Visual Languages and Human-Centered Computing, Sept 2006.

Thomas D. LaToza, Gina Venolia, Robert DeLine. "Maintaining mental models: A study of developer work habits." In Proceedings of the International Conference on Software Engineering, May 2006.

Robert DeLine, Mary Czerwinski and George Robertson. "Easing program comprehension by sharing navigation data." In Proceedings of the IEEE Symposium on Visual Languages and Human-Centered Computing, Sept 2005. Best paper award.

Robert DeLine. "Staying oriented with Software Terrain Maps." In Proceedings of the International Workshop on Visual Languages and Computing, Sept 2005.

Robert DeLine, Amir Khella, Mary Czerwinski and George Robertson. "Towards understanding programs through wear-based filtering." In Proceedings of the ACM Symposium on Software Visualization, May 2005.

Robert DeLine and Manuel Fähndrich. "Typestates for objects." In Proceedings of the European Conference on Object-oriented Programming (ECOOP '04), June 2004.

Mike Barnett, Robert DeLine, Manuel Fähndrich, K. Rustan M. Leino, and Wolfram Schulte. "Verification of object-oriented programs with invariants." In Proceedings of ECOOP Workshop on Formal Techniques for Java-like Programs, 2003.

Manuel Fähndrich and Robert DeLine. "Adoption and focus: Practical linear types for imperative programming." In Proceedings of the ACM Conference on Programming Language Design and Implementation, June 2002.

Robert DeLine and Manuel Fähndrich. "Enforcing high-level protocols in low-level software." In Proceedings of the ACM Conference on Programming Language Design and Implementation, June 2001. Best paper award.

Robert DeLine. "Avoiding packaging mismatch with Flexible Packaging." In Proceedings of the International Conference on Software Engineering, 1999, pages 97-106. Selected for "Best Papers of ICSE '99" issue of IEEE Transactions on Software Engineering.

Robert DeLine. "A catalog of techniques for resolving packaging mismatch." In Proceedings of the Symposium on Software Reusability, 1999, pages 44-53.

Robert DeLine, Gregory Zelesnik, and Mary Shaw. "Lessons on converting batch systems to support interaction." In Proceedings International Conference on Software Engineering, 1997, pages 195-204.

Robert DeLine. "Toward user-defined element types and architectural styles." In Second International Software Architecture Workshop, 1996, pages 47-49.

Mary Shaw, Robert DeLine, Gregory Zelesnik. "Abstractions and implementations for architectural connections." In Third International Conference on Configurable Distributed Systems, 1996, pages 2-10.

Jock D. Mackinlay, George G. Robertson, and Robert DeLine. "Developing calendar visualizers for the Information Visualizer." In Proceedings of the ACM Symposium on User Interface Software and Technology, 1994, pages 109-118.

Randy Pausch, Matthew Conway, Robert DeLine, Rich Gossweiler, and Steve Miale. "Alice and DIVER: A software architecture for building virtual environments." In Adjunct Proceedings of the Conference on Human Factors in Computing Systems (INTERCHI), 1993, pages 13-14.

Randy Pausch, Nathaniel R. Young II, and Robert DeLine. "SUIT: the Pascal of user interface toolkits." In Proceedings of the ACM Symposium on User Interface Software and Technology, 1991, pages 117-125.

Invited Articles

Randy Pausch, Tommy Burnette, A.C. Capeheart, Matthew Conway, Dennis Cosgrove, Rob DeLine, Jim Durbin, Rich Gossweiler, Shuichi Koga, Jeff White. "Alice: Rapid prototyping system for virtual reality." IEEE Computer Graphics and Applications 15(3):8-11, May 1995.

Talks

"Easing program comprehension by sharing navigation data" IEEE Symposium on Visual Languages and Human-Centered Computing, Sept 2005.

"Staying oriented with Software Terrain Maps" Workshop on Visual Languages and Computation, Sept 2005.

"Towards understanding programs through wear-based filtering" ACM Symposium on Software Visualization, May 2005.

"Typestates for objects" European Conference on Object-oriented Programming, June 2004.

"Enforcing high-level protocols in low-level software" ACM Conference on Programming Language Design and Implementation, June 2001.

"Avoiding packaging mismatch with Flexible Packaging" International Conference on Software Engineering, Los Angeles, California, May 1999.

"Techniques to resolve packaging mismatch" Symposium on Software Reusability, Los Angeles, California, May 1999.

"Lessons on converting batch systems to support interaction" International Conference on Software Engineering, Boston, Massachusetts, May 1997.

"Abstractions and implementations for architectural connections" International Conference on Configurable Distributed Systems, Annapolis, Maryland, May 1996.

"Open Implementation Analysis and Design" Half-day tutorial with Gregor Kiczales and Chris Maeda, oopsla, Austin, Texas, October 1995.

Workshops Organized

Microsoft Research/University of Washington Summer Institute on the Human Aspects of Software Development, Skamania, Washington, August 2007. Organized with David Notkin (UW), David Hendry (UW), Gina Venolia (MSR), and Andrew Begel (MSR).

Computer-supported Collaborative Work (CSCW) Workshop on Supporting the Social Side of Large-Scale Software Development, Banff, Alberta, Canada, November 2006. Organized with Li-Te Cheng (IBM Research), Anthony Cox (Dalhousie University), Cleidson de Souza (Universidade Federal do Para), Kevin Schneider (University of Saskatchewan), Janice Singer (National Research Council of Canada), Margaret-Anne Storey (University of Victoria), and Gina Venolia (Microsoft Research).

Program Committees

Foundations of Software Engineering (FSE), 2008

Visual Languages / Human-Centered Computing (VL/HCC), 2008

Computer-Human Interaction (CHI) associate chair, 2008

Empirical Software Engineering and Measurement (ESEM) short papers, 2007

Invited Participation

Workshops

Doctoral Consortium, International Conference on Software Engineering, 1997.

International Software Architecture Workshop, San Francisco, California, 1996.

Component-Based Software Development Workshop, Redmond, Washington, 1996.

Open Implementation Workshop, Gleneden Beach, Oregon, 1994.

Public Technology Demonstrations

DARPA Demo Days, Baltimore, Maryland, 1998.

DARPA Demo Days, Seattle, Washington, 1997.

Awards

Carnegie Mellon University, Eberly Center for Teaching Excellence, Teaching Fellow, 1998.

University of Virginia. Louis T. Rader Award for Computer Science, 1991.

Tau Beta Pi, 1990.

University of Virginia. Rodman Scholar, 1988.

National Merit Scholar, 1988.