Software Development, Programming Principles, Tools, and Languages

Improving quality, efficiency, software trustworthiness

Our research in software development spans all aspects of making developers more productive and software more trustworthy. It includes programming-language design, compilers, specification and verification, development environments and tools, runtime environments, formal models of systems, performance monitoring and optimization, security and privacy, software analytics, and quality improvement.

We work on tools, languages, and methodologies to increase dramatically the productivity of software development. We are interested in analysis tools for existing software and in asking questions about how the software of the future should be designed and developed.



Abram Hindle, Christian Bird, Thomas Zimmermann, and Nachiappan Nagappan, Do Topics Make Sense to Managers and Developers?, in Empirical Software Engineering, Springer, December 2015

Emerson Murphy-Hill, Thomas Zimmermann, Christian Bird, and Nachiappan Nagappan, The Design Space of Bug Fixes and How Developers Navigate It, in IEEE Transactions on Software Engineering, IEEE – Institute of Electrical and Electronics Engineers, December 2015

Menghui Lim, Jian-Guang LOU, Hongyu Zhang, Qiang FU, Andrew Teoh, Qingwei LIN, Rui Ding, and Dongmei Zhang, Identifying Recurrent and Unknown Performance Issues, in ICDM (full paper), IEEE – Institute of Electrical and Electronics Engineers, 14 December 2014

Benjamin Livshits and Todd Mytkowicz, Saving Money While Polling with InterPoll using Power Analysis, AAAI - Association for the Advancement of Artificial Intelligence, 2 November 2014

Akash Lal and Shaz Qadeer, Applying SMT-Based Verification to Device Drivers (Powering the Static Driver Verifier using Corral), in Foundations of Software Engineering (FSE), November 2014

More publications...