The Computing Innovation Fellows Project

Matchmaking Service for Mentors and CIFellows

* Post a Profile!
* Update a Profile

Click for Available Candidate Profiles

Michael Ernst

University/Research Lab: Univesity of Washington
Location: (Seattle, WA)
Personal Research Web Page: http://www.cs.washington.edu/homes/mernst/

Keywords: programmer productivity, software engineering, programming languages, security, testing, type systems, static analysis, dynamic analysis, bug detection, refactoring, verification

Posted on: Thursday, May 20th, 2010
Broad Research Area: Information Assurance / Security / Privacy / Cryptography, Programming Languages / Compilers, Software Engineering

Research Interests:

My chief research focus is programmer productivity. I develop theoretical and practical techniques and tools for helping people to create, understand, and modify software systems; I perform significant experiments at scale; and I distribute tools to programmers and researchers. My research spans software engineering, programming language design, type theory, static and dynamic program analysis, testing, security, and development environments. My results often stem from cross-fertilization between traditionally separate research areas: experimental vs. theoretical, syntactic vs. semantic, static vs. dynamic, exact vs. inferred, proven vs. statistically likely. Overall, I am to make it easier — and more fun — for programmers to build robust, reliable, secure, and correct software.

I briefly mention several current research thrusts. More details are available at my webpage, http://www.cs.washington.edu/homes/mernst/.

Programming language design and type systems: My research focuses on bringing new capabilities to real languages in a backward-compatible way (which is critical for evaluation and adoption), and building implementations to assess their utility. This pragmatic approach promises to aid both today’s and tomorrow’s programmers, and makes results more likely to have practical impact. The work includes type systems, type inference, and frameworks.

Security: My research addresses three distinct practical problems: measuring unintended disclosure of private data, creating exploits for unknown security vulnerabilities, and fixing bugs that underlie zero-day exploits.

Debugging: Dynamic analysis is complementary to static analysis: although dynamic analysis is often unsound, it can also be more precise, scalable, and applicable to legacy programs. My work applies dynamic analysis, with good effect, to problems that in the past have only been addressed statically, such as type inference and refactoring. It is also useful for reproducing crashes and for reducing false positives in bug-finding tools.

Testing: A common theme in my research is exploiting impoverished test suites. Users seem willing to write small test suites or to supply a few sample executions, but they are reluctant or unable to write more comprehensive or more focused test suites. My research automates these and other testing tasks. The research spans test generation, test selection, test classification, and test execution.

Contact Information:

Email is best: email obfuscated - click to reveal
Also see http://www.cs.washington.edu/homes/mernst/contact.html

twitter-icon

Browse Mentor Posts in other Research Areas