Danny Dig

Assistant Professor
Computer Science
Education: 

Ph.D. in Computer Science, Nov 2007
University of Illinois at Urbana-Champaign (UIUC), Urbana, IL

M.S. in Computer Science, June 2002
Politechnics University of Timisoara, Timisoara, Romania

B.S. in Computer Science, June 2001
Politechnics University of Timisoara, Timisoara, Romania

Biography: 

Danny Dig is an assistant professor of Computer Science in the School of EECS at Oregon State University. He enjoys doing research in Software Engineering in general and interactive program transformations in particular. His research goal is to enable programmers to interactively and safely change large programs. He earned his PhD from the University of Illinois at Urbana-Champaign where his research won the best PhD dissertation award, and the First Prize at the ACM Student Research Competition Grand Finals. He did a postdoc at MIT where he opened the area of interactive transformations for parallelism, then he returned to Illinois as a research professor. He (co-)authored 35+ journal and conference papers that appeared in top places in SE/PL. According to Google Scholar his publications have been cited 1,200+ times. He released 9 software systems, among them the world's first open-source refactoring tool, downloaded over 17,000 times. Some of the techniques he developed are shipping with the official release of the popular Eclipse and NetBeans development environments, and are used by millions of Java programmers everyday. He has started two popular workshops: Workshop on Refactoring Tools, and Hot Topics On Software Upgrades. Both are now in their fifth year. He chaired or co-organized 11 workshops, and served as a member of 28 program or review committees for all top conferences in his area. His research is funded by NSF, Boeing, IBM, Intel, and Microsoft.

Research Interests: 

Research Areas:
Software Engineering, in particular interactive program transformation, automated refactoring, concurrency and parallelism, object-oriented frameworks, software testing, and software evolution

Research Description:
Software constantly changes. It is widely known that at least two-thirds of software costs are due to evolution, with some industrial surveys claiming 90%. However, programmers perform most software changes manually, which makes software development more expensive, time-consuming, and error-prone than it should be. Just as machinery fostered the industrial revolution, I hope that my research on automating software changes will foster a revolution in software technology.

My research is driven by two important questions: (i) what software changes occur most often in practice and (ii) how can we automate them to improve programmer productivity and software quality? Answering these questions is relevant for practice, as well as intellectually challenging and rewarding.

I enjoy connecting seemingly unrelated areas of computer science and making novel contributions. For example, connecting parallel computing with interactive techniques from software design, adapting proven software engineering principles into the world of spreadsheet developers, designing scalable program analyses using data mining techniques, etc. I devise techniques and theories that generalize to solve larger classes of problems, as well as build and deploy tools for automating program changes.

Automating changes is challenging as it requires complex code transformations that span multiple, non-adjacent program statements and requires deep inter-procedural analyses that globally reason about objects shared through the heap. A key problem is designing program analyses that are accurate yet fast enough to be used in an interactive tool.

I validate rigorously my research by employing empirical methods (e.g., case studies, controlled experiments, inter- views) in the evaluation stage (did we built the tool right?) and also in the formative stage (are we building the right tool?). I place high value into starting a new research direction with empirical explorative studies.

I happily go the extra mile necessary to move my research into practice. I maintain strong ties with the industry groups building the major integrated development environments (IDEs), and I contribute to open-source software.

2006
Dig, D., and R. Johnson, "How do APIs evolve? A story of refactoring", Journal of Software Maintenance and Evolution: Research and Practice, vol. 18, issue 2, pp. 83 - 107, 03/2006. Abstract
2005
Dig, D., "Using refactorings to automatically update component-based applications", Companion to the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications - OOPSLA '05, San Diego, CA, USA, ACM Press, pp. 228-230 , 10/2005. Abstract

1st Prize Winner of the ACM SIGPLAN Student Research Competition

Dig, D., and R. Johnson, "The role of refactorings in API evolution", 21st IEEE International Conference on Software Maintenance (ICSM'05), Budapest, Hungary, IEEE, pp. 389 - 398, 09/2005. Abstract