Associate Professor
Computer Science

3043 Kelley Engineering Center
Corvallis, OR 97331-5501
Phone: 
(541) 737-8216
Fax: 
(541) 737-1300

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 associate professor of computer science in the School of EECS at Oregon State University, and an adjunct professor at University of Illinois. He enjoys doing research in Software Engineering, with a focus on interactive program transformations that improve programmer productivity and software quality. He successfully pioneered interactive program transformations by opening the field of refactoring in cutting-edge domains including mobile, concurrency and parallelism, component-based, testing, and end-user programming. He earned his Ph.D. from the University of Illinois at Urbana-Champaign where his research won the best Ph.D. dissertation award, and the first prize at the ACM Student Research Competition Grand Finals. He did a postdoc at MIT.

He (co-)authored 50+ journal and conference papers that appeared in top places in SE/PL. According to Google Scholar his publications have been cited 2800+ times. His research was recognized with 6 best paper awards at the flagship and top conferences in SE (FSE'17, FSE'16, ICSE'14, ISSTA'13, ICST'13, ICSME'15), 5 award runner-ups, and 1 most influential paper award (N-10 years) at ICSME'15. He received the NSF CAREER award, the Google Faculty Research Award (twice), and the Microsoft Software Engineering Innovation Award (twice). He released 9 software systems, among them the world's first open-source refactoring tool. Some of the techniques he developed are shipping with the official release of the popular Eclipse, NetBeans, and Visual Studio development environments (of which Eclipse alone had more than 14M downloads in 2014). He has started two popular workshops: Workshop on Refactoring Tools, and Hot Topics On Software Upgrades, both had at least five instances. He chaired or co-organized 14 workshops and 1 conference (MobileSoft'15), and served as a member of 35 program committees for all top conferences in his area. His research is funded by NSF, Boeing, IBM, Intel, Google, 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.