Danny Dig

Assistant Professor
Computer Science

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


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.

Gyori, A., L. Franklin, D. Dig, and J. Lahoda, "Crossing the gap from imperative to functional programming through refactoring", Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering - ESEC/FSE 2013, Saint Petersburg, Russia, ACM Press, pp. 543 - 553, 08/2013. Abstract
Radoi, C., and D. Dig, "Practical static race detection for Java parallel loops", Proceedings of the 2013 International Symposium on Software Testing and Analysis - ISSTA 2013, Lugano, Switzerland, ACM Press, pp. 178 - 190, 07/2013. Abstract

ACM SIGSOFT Distinguished Paper Award

Lin, Y., and D. Dig, "CHECK-THEN-ACT Misuse of Java Concurrent Collections", Proceedings of ICST'13, Luxembourg, pp. 164-173, 03/2013.

best paper award

Okur, S., and D. Dig, "How do developers use parallel libraries?", Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering - FSE '12, Cary, North Carolina, ACM Press, pp. 54-65, 11/2012. Abstract
Badame, S., and D. Dig, "Refactoring meets spreadsheet formulas", 2012 IEEE International Conference on Software Maintenance (ICSM), Trento, Italy, IEEE, pp. 399 - 409, 09/2012. Abstract
Dig, D., J. Marrero, and M. D. Ernst, "How do programs become more concurrent: a story of program transformations", Proceeding of the 4th international workshop on Multicore software engineering - IWMSE '11, Honolulu, HI, USA, ACM Press, pp. 43 - 50, 05/2011. Abstract
Kjolstad, F., D. Dig, G. Acevedo, and M. Snir, "Transformation for class immutability", Proceeding of the 33rd international conference on Software engineering - ICSE '11, Honolulu, HI, ACM Press, pp. 61-70 , 05/2011. Abstract
Dig, D., "A Refactoring Approach to Parallelism", IEEE Software, vol. 28, issue 1, pp. 17 - 22, 01/2011. Abstract
Dig, D., "A practical tutorial on refactoring for parallelism", 2010 IEEE 26th International Conference on Software Maintenance (ICSM), Timisoara, Romania, IEEE, pp. 1 - 2, 09/2010. Abstract
Vakilian, M., D. Dig, R. Bocchino, J. Overbey, V. Adve, and R. Johnson, "Inferring Method Effect Summaries for Nested Heap Regions", 2009 24th IEEE/ACM International Conference on Automated Software Engineering (ASE), Auckland, New Zealand, IEEE, pp. 421 - 432, 11/2009. Abstract
Daniel, B., V. Jagannath, D. Dig, and D. Marinov, "ReAssert: Suggesting Repairs for Broken Unit Tests", 2009 24th IEEE/ACM International Conference on Automated Software Engineering (ASE), Auckland, New Zealand, IEEE, pp. 433 - 444, 11/2009. Abstract
Bocchino, R. L., M. Vakilian, V. S. Adve, D. Dig, S. V. Adve, S. Heumann, R. Komuravelli, J. Overbey, P. Simmons, H. Sung, et al., "A type and effect system for deterministic parallel Java", Proceeding of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications - OOPSLA 09, Orlando, Florida, ACM Press, pp. 97-116, 10/2009. Abstract
Dig, D., J. Marrero, and M. D. Ernst, "Refactoring sequential Java code for concurrency via concurrent libraries", 2009 IEEE 31st International Conference on Software Engineering, Vancouver, BC, Canada, IEEE, pp. 397 - 407, 05/2009. Abstract
Artzi, S., A. Kiezun, J. Dolby, F. Tip, D. Dig, A. Paradkar, and M. D. Ernst, "Finding bugs in dynamic web applications", Proceedings of the 2008 international symposium on Software testing and analysis - ISSTA '08, Seattle, WA, USA, ACM Press, pp. 261-272 , 07/2008. Abstract
Dig, D., K. Manzoor, R. Johnson, and T. N. Nguyen, "Effective Software Merging in the Presence of Object-Oriented Refactorings", IEEE Transactions on Software Engineering, vol. 34, issue 3, pp. 321 - 335, 05/2008. Abstract
Dig, D., S. Negara, V. Mohindra, and R. Johnson, "ReBA: refactoring-aware binary adaptation of evolving libraries", Proceedings of the 13th international conference on Software engineering - ICSE '08, Leipzig, Germany, ACM Press, pp. 441-450 , 05/2008. Abstract
Taneja, K., D. Dig, and T. Xie, "Automated detection of api refactorings in libraries", Proceedings of Automated Software Engineering (ASE'07), Atlanta, Georgia, USA, ACM Press, pp. 377-380 , 11/2007. Abstract
Daniel, B., D. Dig, K. Garcia, and D. Marinov, "Automated testing of refactoring engines", Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on the foundations of software engineering - ESEC-FSE '07, Dubrovnik, Croatia, ACM Press, pp. 185-194, 09/2007. Abstract
Dig, D., K. Manzoor, R. Johnson, and T. N. Nguyen, "Refactoring-Aware Configuration Management for Object-Oriented Programs", 29th International Conference on Software Engineering (ICSE'07), Minneapolis, MN, USA, IEEE, pp. 427 - 436, 05/2007. Abstract
Dig, D., K. Manzoor, T. N. Nguyen, and R. Johnson, "MolhadoRef: a refactoring-aware infrastructure for OO programs", Proceedings of the 2006 OOPSLA workshop on eclipse technology eXchange - eclipse '06, Portland, Oregon, USA, ACM Press, pp. 25 - 29, 10/2006. Abstract
Dig, D., C. Comertoglu, D. Marinov, and R. Johnson, "Automated Detection of Refactorings in Evolving Components", Proceedings of the 20th European conference on Object-Oriented Programming - ECOOP'06, vol. 4067, Nantes, France, pp. 404 - 428, 07/2006. Abstract
Soroker, D., R. Cáceres, D. Dig, A. Schade, S. Spraragen, and A. Tiwari, "Pegboard: a framework for developing mobile applications", Proceedings of the 4th international conference on Mobile systems, applications and services - MobiSys 2006, Uppsala, Sweden, ACM Press, pp. 138-150 , 06/2006. Abstract