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.



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

Akash Lal and Shaz Qadeer, A Program Transformation for Faster Goal-Directed Search, Formal Methods in Computer-Aided Design (FMCAD), October 2014

Sean McDirmid and Jonathan Edwards, Programming with Managed Time, in SPLASH Onward!, ACM, October 2014

Dahlia Malkhi and Markus Weimer, REEFU: A Logging Service for Cluster Applications,, October 2014

Chieh-Jan Mike Liang, Nicholas D. Lane, Niels Brouwers, Li Zhang, Börje F. Karlsson, Hao Liu, Yan Liu, Jun Tang, Xiang Shan, Ranveer Chandra, and Feng Zhao, Caiipa: Automated Large-scale Mobile App Testing through Contextual Fuzzing, in MobiCom, ACM – Association for Computing Machinery, September 2014

More publications...