Michael D. Ernst
#145,328
Most Influential Person Now
Michael D. Ernst's AcademicInfluence.com Rankings
Michael D. Ernstcomputer-science Degrees
Computer Science
#7239
World Rank
#7624
Historical Rank
Software Engineering
#199
World Rank
#201
Historical Rank
Algorithms
#275
World Rank
#279
Historical Rank
Database
#4303
World Rank
#4475
Historical Rank

Download Badge
Computer Science
Why Is Michael D. Ernst Influential?
(Suggest an Edit or Addition)Michael D. Ernst's Published Works
Number of citations in a given year to any of this author's works
Total number of citations to an author for the works they published in a given year. This highlights publication of the most important work(s) by the author
Published Works
- Dynamically discovering likely program invariants to support program evolution (1999) (1396)
- The Daikon system for dynamic detection of likely invariants (2007) (1057)
- An overview of JML tools and applications (2003) (923)
- HaLoop: Efficient Iterative Data Processing on Large Clusters (2010) (874)
- Defects4J: a database of existing faults to enable controlled testing studies for Java programs (2014) (851)
- Feedback-Directed Random Test Generation (2007) (782)
- Are mutants a valid substitute for real faults in software testing? (2014) (530)
- Randoop: feedback-directed random testing for Java (2007) (444)
- Automatically patching errors in deployed software (2009) (418)
- Automatic creation of SQL Injection and cross-site scripting attacks (2009) (407)
- Static and dynamic analysis: synergy and duality (2003) (355)
- HAMPI: a solver for string constraints (2009) (291)
- Verdi: a framework for implementing and formally verifying distributed systems (2015) (291)
- Evaluating and Improving Fault Localization (2017) (287)
- Eclat: Automatic Generation and Classification of Test Inputs (2005) (272)
- Quickly detecting relevant program invariants (2000) (263)
- An Empirical Analysis of C Preprocessor Use (2002) (237)
- Leveraging existing instrumentation to automatically infer invariant-constrained models (2011) (220)
- Automated support for program refactoring using invariants (2001) (219)
- Dynamically discovering likely program invariants (2000) (217)
- Proactive detection of collaboration conflicts (2011) (217)
- Automatic SAT-Compilation of Planning Problems (1997) (213)
- Quantitative information flow as network flow capacity (2008) (201)
- Improving test suites via operational abstraction (2003) (201)
- Which warnings should I fix first? (2007) (200)
- Finding latent code errors via machine learning over program executions (2004) (197)
- Finding Bugs in Web Applications Using Dynamic Test Generation and Explicit-State Model Checking (2010) (191)
- Automatic generation of program specifications (2002) (184)
- Finding bugs in dynamic web applications (2008) (173)
- Practical pluggable types for java (2008) (173)
- Predicate Dispatching: A Unified Theory of Dispatch (1998) (167)
- Inferring models of concurrent systems from logs of their behavior with CSight (2014) (158)
- An experimental evaluation of continuous testing during development (2004) (157)
- The HaLoop approach to large-scale iterative data analysis (2012) (150)
- Refactoring sequential Java code for concurrency via concurrent libraries (2009) (148)
- Reducing wasted development time via continuous testing (2003) (147)
- Javari: adding reference immutability to Java (2005) (145)
- Static Deadlock Detection for Java Libraries (2005) (140)
- Empirically revisiting the test independence assumption (2014) (132)
- Combined static and dynamic automated test generation (2011) (131)
- Value dependence graphs: representation without taxation (1994) (131)
- Automatic test factoring for java (2005) (130)
- Inference and enforcement of data structure consistency specifications (2006) (128)
- Peripancreatic vascular abnormalities complicating acute pancreatitis: contrast-enhanced helical CT findings. (2004) (127)
- Interactive record/replay for web application debugging (2013) (124)
- CBCD: Cloned buggy code detector (2012) (120)
- ReCrash: Making Software Failures Reproducible by Preserving Object States (2008) (118)
- Static verification of dynamically detected program invariants: Integrating Daikon and ESC/Java (2001) (117)
- Automated diagnosis of software configuration errors (2013) (116)
- An Empirical Study of Fault Localization Families and Their Combinations (2018) (113)
- Planning for change in a formal verification of the raft consensus protocol (2016) (112)
- Efficient incremental algorithms for dynamic detection of likely invariants (2004) (112)
- NL2Bash: A Corpus and Semantic Parser for Natural Language Interface to the Linux Operating System (2018) (108)
- Collaborative Verification of Information Flow for a High-Assurance App Store (2014) (103)
- Ultrasound diagnosis and neurodevelopmental outcome of localised and extensive cystic periventricular leucomalacia (2001) (103)
- Building and using pluggable type-checkers (2011) (102)
- Efficient mutation analysis by propagating and partitioning infected execution states (2014) (96)
- Predicting problems caused by component upgrades (2003) (93)
- Object and reference immutability using Java generics (2007) (92)
- Refactoring using type constraints (2007) (90)
- Dynamic inference of abstract types (2006) (87)
- Invariant inference for static checking: an empirical evaluation (2002) (85)
- Static Analysis of Implicit Control Flow: Resolving Java Reflection and Android Intents (T) (2015) (83)
- Prioritizing Warning Categories by Analyzing Software History (2007) (81)
- A practical type system and language for reference immutability (2004) (78)
- Automatic generation of oracles for exceptional behaviors (2016) (78)
- Early Detection of Collaboration Conflicts and Risks (2013) (77)
- Which configuration option should I change? (2014) (71)
- Speculative analysis of integrated development environment recommendations (2012) (70)
- Ownership and immutability in generic Java (2010) (66)
- Scalable verification of border gateway protocol configurations with an SMT solver (2016) (66)
- Reim & ReImInfer: checking and inference of reference immutability and method purity (2012) (66)
- Computer Aided Verification (2016) (65)
- Refactoring for Parameterizing Java Classes (2007) (64)
- HAMPI: A solver for word equations over strings, regular expressions, and context-free grammars (2012) (63)
- Translating code comments to procedure specifications (2018) (62)
- Converting java programs to use generic libraries (2004) (62)
- An Empirical Comparison of Automated Generation and Classification Techniques for Object-Oriented Unit Testing (2006) (59)
- Splenic and Perisplenic Involvement in Acute Pancreatitis: Determination of Prevalence and Morphologic Helical CT Features (2001) (57)
- Scaling up automated test generation: Automatically generating maintainable regression unit tests for programs (2011) (57)
- Automated documentation inference to explain failed tests (2011) (56)
- Early Identification of Incompatibilities in Multi-component Upgrades (2004) (55)
- Verification games: making verification fun (2012) (53)
- Inference and Checking of Object Ownership (2012) (53)
- Debugging distributed systems (2016) (52)
- Unifying FSM-inference algorithms through declarative specification (2013) (52)
- Continuous testing in Eclipse (2004) (52)
- HAMPI: A String Solver for Testing, Analysis and Vulnerability Detection (2011) (50)
- Finding the needles in the haystack: Generating legal test inputs for object-oriented programs (2006) (48)
- Using Declarative Specification to Improve the Understanding, Extensibility, and Comparison of Model-Inference Algorithms (2015) (46)
- Tunable Static Inference for Generic Universe Types (2011) (44)
- Automatic Trigger Generation for Rule-based Smart Homes (2016) (43)
- Invariant inference for static checking: (2002) (42)
- A type system for regular expressions (2012) (42)
- Inference of Reference Immutability (2008) (41)
- Practical Fine-Grained Static Slicing of Optimized Code (1994) (41)
- Using simulated execution in verifying distributed algorithms (2002) (41)
- Explaining Visual Changes in Web Interfaces (2015) (41)
- Fast synthesis of fast collections (2016) (39)
- Automatically repairing broken workflows for evolving GUI applications (2013) (39)
- Speculative analysis: exploring future development states of software (2010) (39)
- Combined static and dynamic mutability analysis (2007) (39)
- Synoptic: studying logged behavior with inferred models (2011) (39)
- A simulation-based proof technique for dynamic information flow (2007) (38)
- Renal and perirenal space involvement in acute pancreatitis: spiral CT findings (2000) (38)
- Invited Talk Static and dynamic analysis: synergy and duality (2004) (37)
- Crystal: precise and unobtrusive conflict warnings (2011) (36)
- Natural Language is a Programming Language: Applying Natural Language Processing to Software Development (2017) (36)
- Finding errors in multithreaded GUI applications (2012) (35)
- Mock object creation for test factoring (2004) (34)
- Detection of Web Service substitutability and composability (2006) (33)
- Parametric Analyses In Randomized Clinical Trials (2002) (32)
- Reducing the barriers to writing verified specifications (2012) (30)
- Revisiting the Relationship Between Fault Detection, Test Adequacy Criteria, and Test Set Size (2020) (30)
- Selecting Predicates for Implications in Program Analysis (2002) (29)
- Generalized Data Structure Synthesis (2018) (29)
- Case studies and tools for contract specifications (2014) (29)
- How do programs become more concurrent: a story of program transformations (2011) (28)
- Mining temporal invariants from partially ordered logs (2011) (28)
- Verifying that web pages have accessible layout (2018) (28)
- Proactive detection of inadequate diagnostic messages for software configuration errors (2015) (27)
- Using State Infection Conditions to Detect Equivalent Mutants and Speed up Mutation Analysis (2013) (27)
- A Data Programming CS1 Course (2015) (25)
- Rely-guarantee references for refinement types over aliased mutable data (2013) (24)
- Making offline analyses continuous (2013) (23)
- Debugging Distributed Systems (2016) (23)
- Dynamically Discovering Program Invariants Involving Collections (2000) (23)
- Dependent-test-aware regression testing techniques (2020) (22)
- Evaluating & improving fault localization techniques (2016) (22)
- Java UI : Effects for Controlling UI Object Access (2013) (22)
- Mining temporal invariants from partially ordered logs (2012) (22)
- Comparing developer-provided to user-provided tests for fault localization and automated program repair (2018) (21)
- Static lock capabilities for deadlock freedom (2012) (21)
- Parameter reference immutability: formal definition, inference tool, and comparison (2009) (21)
- HaLoop (2010) (20)
- Shedding light on distributed system executions (2014) (19)
- Static Identification of Injection Attacks in Java (2019) (19)
- Quantitative Information-Flow Tracking for C and Related Languages (2006) (19)
- Verifying Distributed Algorithms via Dynamic Analysis and Theorem Proving (2002) (18)
- Cascade: A Universal Programmer-Assisted Type Qualifier Inference Tool (2015) (18)
- Visualizing Distributed System Executions (2020) (18)
- Selecting , Refining , and Evaluating Predicates for Program Analysis (2003) (18)
- Boolean Formulas for the Static Identification of Injection Attacks in Java (2015) (18)
- When Tests Collide: Evaluating and Coping with the Impact of Test Dependence (2015) (18)
- Always-available static and dynamic feedback (2011) (18)
- Investigating Safety of a Radiotherapy Machine Using System Models with Pluggable Checkers (2016) (17)
- Formal Semantics and Automated Verification for the Border Gateway Protocol (2016) (17)
- Dynamically Detecting Likely Program Invariants (2000) (16)
- Immutability (2013) (16)
- Acromioplasty: comparison of outcome in patients with and without workers' compensation. (2000) (15)
- Reducing Feedback Delay of Software Development Tools via Continuous Analysis (2015) (15)
- Theories in Practice: Easy-to-Write Specifications that Catch Bugs (2008) (15)
- Improving the adaptability of multi-mode systems via program steering (2004) (14)
- Selecting Refining and Evaluating Properties for Program Analysis (2003) (13)
- Introductory programming meets the real world: using real problems and data in CS1 (2014) (13)
- Development History Granularity Transformations (2015) (13)
- Playing Konane Mathematically: A Combinatorial Game-Theoretic Analysis (1995) (13)
- Graphs induced by Gray codes (2002) (12)
- Inference of field initialization (2011) (12)
- Formalizing Lightweight Verification of Software Component Composition (2004) (12)
- Synoptic: Summarizing System Logs with Refinement (2010) (12)
- Proceedings of the 6th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering (2005) (11)
- Challenges and Options for Validation and Debugging (2016) (11)
- The groupthink specification exercise (2005) (11)
- Specification Coverage as a Measure of Test Suite Quality (2001) (11)
- Improving IDE recommendations by considering global implications of existing recommendations (2012) (10)
- Locking Discipline Inference and Checking (2016) (10)
- Verifying Invariants of Lock-Free Data Structures with Rely-Guarantee and Refinement Types (2017) (10)
- Development History Granularity Transformations (N) (2015) (10)
- MeMo: Automatically identifying metamorphic relations in Javadoc comments for test automation (2021) (10)
- ReCrashJ: a tool for capturing and reproducing program crashes in deployed applications (2009) (9)
- Summary of dynamically discovering likely program invariants (2001) (9)
- Serializing Parallel Programs by Removing Redundant Computation (1994) (9)
- SpaceSearch: a library for building and verifying solver-aided tools (2017) (8)
- Image / Map Correspondence Using Curve Matching † (1989) (8)
- Foundations of Software Engineering (FSE-10) (2002) (7)
- Tools for enforcing and inferring reference immutability in Java (2007) (7)
- Verifying Object Construction (2020) (7)
- A type system for format strings (2014) (7)
- Bagpipe : Verified BGP Configuration Checking (2016) (6)
- Rethinking the economics of software engineering (2010) (6)
- Teaching Rigorous Distributed Systems With Efficient Model Checking (2019) (6)
- Ayudante: identifying undesired variable interactions (2015) (6)
- Toward a Dependability Case Language and Workflow for a Radiation Therapy System (2015) (5)
- Continuous Compliance (2020) (5)
- ICSE workshop on dynamic analysis (WODA 2003) (2003) (5)
- Lightweight and modular resource leak verification (2021) (5)
- Lightweight verification of array indexing (2018) (5)
- Pluggable type-checking for custom type qualifiers in Java (2007) (5)
- Active learning? not with my syllabus! (2012) (5)
- Compile-time type-checking for custom type qualifiers in Java (2007) (4)
- Tunable universe type inference (2009) (4)
- Speculative Identification of Merge Conflicts and Non-Conflicts University of Washington Technical Report UW-CSE-10-0301 (2010) (4)
- Compile-time type-checking for custom type qualifiers in java (2008) (4)
- Inference of generic types in Java (2003) (4)
- Concurrencer: A tool for retrofitting concurrency into sequential java applications via concurrent libraries (2009) (4)
- Dependence-Guided Random Test Generation (2010) (4)
- Building and using pluggable type systems (2010) (3)
- Predicting Development Trajectories to Prevent Collaboration Conflicts (2012) (3)
- Self-defending software: Automatically patching security vulnerabilities (2009) (3)
- Papers from the 1995 ACM SIGPLAN workshop on Intermediate representations (1995) (3)
- How Tests and Proofs Impede One Another: The Need for Always-On Static and Dynamic Feedback (2010) (3)
- Semantics for Locking Specifications (2015) (3)
- Determining legal method call sequences in object interfaces (2003) (3)
- Verification for legacy programs (2005) (3)
- Automatic Formal Verification for EPICS (2018) (2)
- Improving Reliability and Adaptability via Program Steering (2003) (2)
- A Graphical Interactive Debugger for Distributed Systems (2018) (2)
- Semantic-based Analysis of Javadoc Comments (2017) (2)
- Proceedings of the Workshop on Model-Based Testing and Object-Oriented Systems (2006) (2)
- Collaborative Learning for Security and Repair in Application Communities (2011) (2)
- ReCrash: Making Crashes Reproducible (2007) (2)
- Test factoring: focusing test suites for the task at hand (2005) (2)
- Bandsaw: Log-powered test scenario generation for distributed systems (2011) (2)
- Von der Müllkippe zur Ressourcenpolitik – 40 Jahre Abfallpolitik in Deutschland (2009) (2)
- Crowd-Sourced Program Verification (2012) (1)
- Workshop on Managing Systems via Log Analysis and Machine Learning Techniques, SLAML'10, Vancouver, BC, Canada, October 3, 2010 (2010) (1)
- Verifying Determinism in Sequential Programs (2021) (1)
- Research summary for dynamic detection of program invariants (1999) (1)
- Proceedings of the 2005 ACM SIGPLAN-SIGSOFT Workshop on Program Analysis For Software Tools and Engineering, PASTE'05, Lisbon, Portugal, September 5-6, 2005 (2005) (1)
- Interactive Navigation of Captured Executions via Program Output (2015) (1)
- Using predicate fields in a highly flexible industrial control system (2005) (1)
- Summary: ICSE workshop on dynamic analysis (WODA 2003) (2003) (1)
- Checking conformance of applications against GUI policies (2021) (1)
- Compile-time type-checking for custom type qualifiers in Java (2008) (1)
- Slicing Pointers and Procedures (abstract) (1995) (1)
- Formal Semantics & Verification for the Border Gateway Protocol (2016) (1)
- Real-world evidence on siponimod treatment in patients with secondary progressive multiple sclerosis (2022) (1)
- Safe Runtime Examination of Data Structures in C Programs (2004) (1)
- Theory and practice of string solvers (invited talk abstract) (2019) (1)
- A format string checker for Java (2014) (1)
- User scripting on Android using BladeDroid (2014) (0)
- Session details: Scaling-up static analysis (2007) (0)
- Intellectual Property in Computing: (How) Should Software Be Protected? An Industry Perspective (1992) (0)
- Theories in Practice : Easy-to-Write Speci & # 64257 ; cations that Catch Bugs (2008) (0)
- Distributed-system Features and Challenges Shiviz Is a New Distributed System Debugging Visualization Tool Debugging Distributed Systems (2016) (0)
- Panel: perspectives on software engineering (2001) (0)
- Research on NLP for RE at Università della Svizzera Italiana (USI): A Report (2019) (0)
- VizAssert Visual Logic Assertion HTML + CSS Assertion QFLRA ( SMT ) 3 § 4 Accessibility Guidelines (2018) (0)
- Enforcing reference and object immutability in Java (2008) (0)
- HEP Science Network Requirements--Final Report (2010) (0)
- Semantics for Locking Specifications ( extended abstract ) (2016) (0)
- Ownership and Immutability in Generic Java ( OIGJ ) (2010) (0)
- Mutation Analysis for the Real World: Effectiveness, Efficiency, and Proper Tool Support (2015) (0)
- Verifying Determinism in Sequential Programs (2021) (0)
- Compile-time type-checking for custom type qualifiers in Java (2007) (0)
- Learning and Repair Techniques for Self-Healing Systems (2006) (0)
- Bridging the Gap Between Binary and Source Analysis (0)
- Replication package for Lightweight Verification of Array Indexing (2018) (0)
- EATOOS-Testing Tool for Unit Testing of Object Oriented Software (2019) (0)
- OP-BRHE120108 2051..2057 (2012) (0)
- Call Me Maybe: Using NLP to Automatically Generate Unit Test Cases Respecting Temporal Constraints (2022) (0)
- Ayudante: Identifying Undesired Variable Interactions (Abstract) (2016) (0)
- A Picture is Worth a Billion Bits: Adaptive Visualization of Big Data (2020) (0)
- Custom type qualiers via annotations on Java types (2012) (0)
- Die Theorie der Verfremdung als methodischer Zugang zu Jesusfilmen (1994) (0)
- Session details: Fault localization (2008) (0)
- Adequate Models for Recursive Program Schemes Adequate Models for Recursive Program Schemes (1989) (0)
This paper list is powered by the following services:
What Schools Are Affiliated With Michael D. Ernst?
Michael D. Ernst is affiliated with the following schools: