Contact
CSE 538
206-221-0965
mernstcs.washington.edu
Areas of interest:
Software engineering, programming languages
2023
Inference of resource management specifications
OOPSLA 2023, Object-Oriented Programming Systems, Languages, and Applications, 2023.
, https://checkerframework.org/ implementation
Pluggable type inference for free
ASE 2023: Proceedings of the 38th Annual International Conference on Automated Software Engineering, 2023.
, https://checkerframework.org/ implementation
2022
Nothing is better than the Optional type. Really. Nothing is better.
Java Magazine, 2022.
, https://homes.cs.washington.edu/~mernst/advice/nothing-is-better-than-op... original version
https://blogs.oracle.com/javamagazine/post/optional-class-null-pointer-d... Java Magazine version
Call Me Maybe: Using NLP to automatically generate unit test cases respecting temporal constraints
ASE 2022: Proceedings of the 37th Annual International Conference on Automated Software Engineering, 2022: 1-11.
, https://github.com/ariannab/callmemaybe implementation & replication package
Notes on Program Analysis
\urlhttps://homes.cs.washington.edu/ mernst/pubs/program-analysis-book.pdf, 2022.
, Accumulation analysis (artifact)
DARTS, Dagstuhl Artifacts Series 8:2, 2022: 22:1-22:3.
, https://checkerframework.org/ implementation
https://drops.dagstuhl.de/opus/volltexte/2022/16220/artifact/DARTS-8-2-2... artifact
Accumulation analysis
ECOOP 2022 –- Object-Oriented Programming, 33rd European Conference, 2022: 10:1-10:31.
, https://docs.google.com/presentation/d/1cEk5wH9L1a5a9bXof3BmA7DN6Nwx9NIV... slides (Google Slides)
https://checkerframework.org/ implementation
https://doi.org/10.5281/zenodo.5771196 artifact
2021
MeMo: Automatically identifying metamorphic relations in Javadoc comments for test automation
Journal of Systems and Software 181, 2021: 111041:1–13.
, https://github.com/ariannab/MeMo implementation
Checking conformance of applications against GUI policies
ESEC/FSE 2021: The ACM 29th joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE), 2021: 95-106.
, https://docs.google.com/presentation/d/1CsPMaomfsL53KON1nWfI3vVN8bKmzLMJ... slides (Google Slides)
https://github.com/izgzhen/ui-checker implementation
Lightweight and modular resource leak verification
ESEC/FSE 2021: The ACM 29th joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE), 2021: 181–192.
, https://docs.google.com/presentation/d/1MBBVh0wbaQnlxKwsPwMPEFVIMaH2tj6N... slides (Google Slides)
https://www.youtube.com/watch?v=bY5K3kRg3aw talk video (YouTube)
https://checkerframework.org/ implementation
https://doi.org/10.5281/zenodo.4902321 scripts and data
Verifying determinism in sequential programs
ICSE 2021, Proceedings of the 43rd International Conference on Software Engineering, 2021: 37-49.
, https://homes.cs.washington.edu/~mernst/pubs/determinism-tr210201.pdf extended version (PDF)
https://github.com/t-rasmud/checker-framework/tree/nondet-checker implementation
https://doi.org/10.5281/zenodo.4536285 experimental data
Verifying determinism in sequential programs (extended version)
University of Washington Paul G. Allen School of Computer Science and Engineering:UW-CSE-2021-02-01, 2021.
, 2020
Revisiting the relationship between fault detection, test adequacy criteria, and test set size
ASE 2020: Proceedings of the 35th Annual International Conference on Automated Software Engineering, 2020: 237-249.
, https://docs.google.com/presentation/d/1ipwcUWZzHKkKbxFPYWkJ-z1OGdabBHF9... slides (Google Slides)
Continuous compliance
ASE 2020: Proceedings of the 35th Annual International Conference on Automated Software Engineering, 2020: 511-523.
, https://doi.org/10.5281/zenodo.3976221 scripts and data
https://github.com/awslabs/aws-kms-compliance-checker KMS checker
https://github.com/awslabs/aws-crypto-policy-compliance-checker crypto checker
https://github.com/kelloggm/bucket-compliance-checker bucket checker
https://github.com/kelloggm/no-literal-checker no literal checker
Dependent-test-aware regression testing techniques
ISSTA 2020, Proceedings of the 2020 International Symposium on Software Testing and Analysis, 2020: 298-311.
, https://www.youtube.com/watch?v=YV9561AmNlU talk video (YouTube)
https://github.com/TestingResearchIllinois/dependent-tests-impact implementation
https://sites.google.com/view/test-dependence-impact data
Verifying Object Construction
ICSE 2020, Proceedings of the 42nd International Conference on Software Engineering, 2020: 1447-1458.
, https://docs.google.com/presentation/d/16aeJkvQqFqFkfs6Y1X6iwvGCsus37muE... slides (Google Slides)
https://checkerframework.org/ implementation
https://doi.org/10.5281/zenodo.3634993 scripts and data
Where should I comment my code? A dataset and model for predicting locations that need comments
ICSE NIER, Proceedings of the 42nd International Conference on Software Engineering, New Ideas and Emerging Results Track, 2020: 21-24.
, https://groups.inf.ed.ac.uk/cup/comment-locator/ implementation and dataset
Visualizing Distributed System Executions
ACM Transactions on Software Engineering and Methodology 29:2, 2020: 9:1–9:38.
, https://bestchai.bitbucket.io/shiviz/ ShiViz
https://bestchai.bitbucket.io/shiviz-demo/ video demo of ShiViz
https://github.com/DistributedClocks XVector
2019
Teaching rigorous distributed systems with efficient model checking
EuroSys, 2019: 1-15.
, An empirical study of fault localization families and their combinations
IEEE Transactions on Software Engineering 47, 2019: 332-347.
, https://combinefl.github.io CombineFL tool
Modular verification of web page layout
Proceedings of the ACM on Programming Languages 3:151, 2019: 26. OOPSLA
, https://cassius.uwplse.org/ Troika, VizAssert, and Cassius tools
2018
Comparing developer-provided to user-provided tests for fault localization and automated program repair
ISSTA 2018, Proceedings of the 2018 International Symposium on Software Testing and Analysis, 2018: 287-297.
, https://docs.google.com/presentation/d/1vdkSkkue-jsk5VdUtcXwYIZ0_2bJlfBv... slides (Google Slides)
https://github.com/rjust/defects4j data
Lightweight verification of array indexing
ISSTA 2018, Proceedings of the 2018 International Symposium on Software Testing and Analysis, 2018: 3-14.
, https://checkerframework.org/ implementation
Translating code comments to procedure specifications
ISSTA 2018, Proceedings of the 2018 International Symposium on Software Testing and Analysis, 2018: 242-253.
, https://github.com/albertogoffi/toradocu Jdoctor implementation
Verifying that web pages have accessible layout
PLDI 2018: Proceedings of the ACM SIGPLAN 2016 Conference on Programming Language Design and Implementation, 2018: 1-14.
, https://cassius.uwplse.org/ VizAssert and Cassius tools
NL2Bash: A corpus and semantic parser for natural language interface to the Linux operating system
LREC: Language Resources and Evaluation Conference, 2018.
, Generalized data structure synthesis
ICSE 2018, Proceedings of the 40th International Conference on Software Engineering, 2018: 958-968.
, https://github.com/CozySynthesizer/cozy Cozy implementation
2017
Automatic formal verification for EPICS
ICALEPCS 2017: 16th International Conference on Accelerator and Large Experimental Physics Control Systems, 2017.
, https://www.youtube.com/watch?v=CFSnkB5z0GA talk video (YouTube)
SpaceSearch: A library for building and verifying solver-aided tools
ICFP 2017: Proceedings of the 22nd ACM SIGPLAN International Conference on Functional Programming, 2017: 25:1–25:28.
, Verifying Invariants of Lock-free Data Structures with Rely-Guarantee and Refinement Types
ACM Transactions on Pro\-gramming Languages and Systems 39:3, 2017: 11:1–11:54.
, Evaluating and improving fault localization
ICSE 2017, Proceedings of the 39th International Conference on Software Engineering, 2017: 609-620.
, https://homes.cs.washington.edu/~mernst/pubs/fault-localization-icse2017... longer slide deck (PowerPoint)
https://homes.cs.washington.edu/~mernst/pubs/fault-localization-icse2017... longer slide deck (PDF)
https://homes.cs.washington.edu/~mernst/pubs/fault-localization-tr160803... technical report UW-CSE-16-08-03
https://bitbucket.org/rjust/fault-localization-data data and scripts
Natural language is a programming language: Applying natural language processing to software development
SNAPL 2017: the 2nd Summit oN Advances in Programming Languages, 2017: 4:1–4:14.
, Program synthesis from natural language using recurrent neural networks
University of Washington Department of Computer Science and Engineering:UW-CSE-17-03-01, 2017.
, https://kirin.cs.washington.edu:8000/ Tellina website
https://github.com/TellinaTool/tellina Tellina implementation
2016
Scalable verification of Border Gateway Protocol configurations with an SMT solver
OOPSLA 2016, Object-Oriented Programming Systems, Languages, and Applications, 2016: 765-780.
, https://www.youtube.com/watch?v=eKB5Vj0PsIk talk video
https://bagpipe.uwplse.org Bagpipe homepage
Automatic trigger generation for rule-based smart homes
PLAS 2016: ACM SIGPLAN Workshop on Programming Languages and Analysis for Security, 2016: 97-102.
, https://docs.google.com/a/cs.washington.edu/presentation/d/1lW9zagndSkCd... slides (Google Slides)
https://homes.cs.washington.edu/~mernst/pubs/trigger-generation-plas2016... PDF
https://homes.cs.washington.edu/~mernst/pubs/trigger-generation-plas2016... slides (PDF)
Evaluating & improving fault localization techniques
University of Washington Department of Computer Science and Engineering:UW-CSE-16-08-03, 2016. Revised February 2017
, https://bitbucket.org/rjust/fault-localization-data data and scripts
https://homes.cs.washington.edu/~mernst/pubs/fault-localization-tr160803... PDF
Debugging distributed systems: Challenges and options for validation and debugging
Communications of the ACM 59:8, 2016: 32–37.
, https://bestchai.bitbucket.io/shiviz/ online deployment (try it!)
https://github.com/DistributedClocks/shiviz ShiVector and ShiViz source code
https://bestchai.bitbucket.io/shiviz-demo/ video demo (YouTube)
Formal Semantics and Automated Verification for the Border Gateway Protocol
NetPL 2016: ACM SIGCOMM Workshop on Networking and Programming Languages (NetPL 2016), 2016.
, https://github.com/uwplse/uwplse-bagpipe Bagpipe implementation
Investigating safety of a radiotherapy machine using system models with pluggable checkers
CAV 2016: 28th International Conference on Computer Aided Verification, 2016: 23-41.
, Automatic generation of oracles for exceptional behaviors
ISSTA 2016, Proceedings of the 2016 International Symposium on Software Testing and Analysis, 2016: 213–224.
, https://github.com/albertogoffi/toradocu Toradocu implementation
Fast synthesis of fast collections
PLDI 2016: Proceedings of the ACM SIGPLAN 2016 Conference on Programming Language Design and Implementation, 2016: 355-368.
, https://github.com/CozySynthesizer/cozy Cozy implementation
Semantics for locking specifications
NFM 2016: 8th NASA Formal Methods Symposium, 2016: 355-372.
, https://checkerframework.org/ checking implementation
https://homes.cs.washington.edu/~mernst/pubs/locking-semantics-nfm2016.pdf PDF
Locking discipline inference and checking
ICSE 2016, Proceedings of the 38th International Conference on Software Engineering, 2016: 1133-1144.
, https://checkerframework.org/ checking implementation
https://homes.cs.washington.edu/~mernst/pubs/locking-inference-checking-... PDF
Debugging distributed systems: Challenges and options for validation and debugging
ACM Queue 14:2, 2016: 91-110.
, https://bestchai.bitbucket.io/shiviz/ online deployment (try it!)
https://github.com/DistributedClocks/shiviz ShiVector and ShiViz source code
https://bestchai.bitbucket.io/shiviz-demo/ video demo (YouTube)
Planning for change in a formal verification of the Raft consensus protocol
CPP 2016: 5th ACM SIGPLAN Conference on Certified Programs and Proofs, 2016: 154-165.
, https://verdi.uwplse.org/ Verdi website
https://github.com/uwplse/verdi Verdi implementation
https://github.com/uwplse/verdi/tree/cpp2015 Raft implementation and proofs
https://homes.cs.washington.edu/~mernst/pubs/raft-proof-cpp2016.pdf PDF
https://homes.cs.washington.edu/~mernst/pubs/raft-proof-cpp2016-slides.pdf slides (PDF)
Bagpipe: Verified BGP configuration checking
University of Washington Department of Computer Science and Engineering:UW-CSE-16-01-01, 2016.
, https://github.com/uwplse/uwplse-bagpipe Bagpipe implementation
https://homes.cs.washington.edu/~mernst/pubs/bgp-configuration-tr160101.pdf PDF
2015
Explaining visual changes in web interfaces
UIST 2015: Proceedings of the 28th ACM Symposium on User Interface Software and Technology, 2015: 259–268.
, https://github.com/burg/replay-staging/ Timelapse implementation
https://homes.cs.washington.edu/~mernst/pubs/dom-tracing-uist2015.pdf PDF
https://homes.cs.washington.edu/~mernst/pubs/dom-tracing-uist2015-slides... slides (PDF)
Static analysis of implicit control flow: Resolving Java reflection and Android intents
ASE 2015: Proceedings of the 30th Annual International Conference on Automated Software Engineering, 2015: 669-679.
, https://homes.cs.washington.edu/~mernst/pubs/implicit-control-flow-tr150... extended version
https://types.cs.washington.edu/sparta/ SPARTA toolset
https://checkerframework.org/ Checker Framework
https://homes.cs.washington.edu/~mernst/pubs/implicit-control-flow-ase20... PDF
https://homes.cs.washington.edu/~mernst/pubs/implicit-control-flow-ase20... slides (PDF)
Boolean formulas for the static identification of injection attacks in Java
LPAR 2015: Proceedings of the 20th International Conference on Logic for Programming, Artificial Intelligence, and Reasoning, 2015: 130–145.
, https://homes.cs.washington.edu/~mernst/pubs/detect-injections-lpar2015.pdf PDF
https://homes.cs.washington.edu/~mernst/pubs/detect-injections-lpar2015-... slides (PDF)
Development history granularity transformations
ASE 2015: Proceedings of the 30th Annual International Conference on Automated Software Engineering, 2015: 697-702.
, https://homes.cs.washington.edu/~mernst/pubs/history-transformations-ase... PDF
https://homes.cs.washington.edu/~mernst/pubs/history-transformations-ase... slides (PDF)
https://homes.cs.washington.edu/~mernst/pubs/history-transformations-ase... slides (PowerPoint)
Ayudante: Identifying undesired variable interactions
WODA 2015: 13th International Workshop on Dynamic Analysis, 2015: 8–13.
, https://homes.cs.washington.edu/~mernst/pubs/variable-interactions-woda2... PDF
https://homes.cs.washington.edu/~mernst/pubs/variable-interactions-woda2... slides (PDF)
Locking discipline inference and checking
University of Washington Department of Computer Science and Engineering:UW-CSE-15-09-02, 2015.
, Boolean formulas for the static identification of injection attacks in Java
University of Washington Department of Computer Science and Engineering:UW-CSE-15-09-03, 2015.
, Semantics for locking specifications
University of Washington Department of Computer Science and Engineering:UW-CSE-15-09-01, 2015.
, Lessons learned in game development for crowdsourced software formal verification
3GSE: USENIX Summit on Gaming, Games, and Gamification in Security Education, 2015.
, Reducing feedback delay of software development tools via continuous analysis
IEEE Transactions on Software Engineering 41:8, 2015: 745–763.
, https://homes.cs.washington.edu/~mernst/pubs/offline-continuous-esecfse2... ESEC/FSE 2013 slides (PDF)
https://homes.cs.washington.edu/~mernst/pubs/offline-continuous-esecfse2... ESEC/FSE 2013 slides (PowerPoint)
https://homes.cs.washington.edu/~mernst/pubs/offline-continuous-tse2015.pdf PDF
Static analysis of implicit control flow: Resolving Java reflection and Android intents (extended version)
University of Washington Department of Computer Science and Engineering:UW-CSE-15-08-01, 2015.
, https://types.cs.washington.edu/sparta/ SPARTA toolset
https://checkerframework.org/ Checker Framework
Proactive detection of inadequate diagnostic messages for software configuration errors
ISSTA 2015, Proceedings of the 2015 International Symposium on Software Testing and Analysis, 2015: 12–23.
, https://github.com/zhang-sai/config-errors ConfDiagDetector implementation
https://homes.cs.washington.edu/~mernst/pubs/inadequate-diagnostics-isst... PDF
https://homes.cs.washington.edu/~mernst/pubs/inadequate-diagnostics-isst... slides (PDF)
Verdi: A framework for implementing and formally verifying distributed systems
PLDI 2015: Proceedings of the ACM SIGPLAN 2015 Conference on Programming Language Design and Implementation, 2015: 357–368.
, https://verdi.uwplse.org/verdi_slides.pdf slides (PDF)
https://verdi.uwplse.org/ Verdi website
https://github.com/uwplse/verdi Verdi implementation
https://homes.cs.washington.edu/~mernst/pubs/verify-distsystem-pldi2015.pdf PDF
Cascade: A universal programmer-assisted type qualifier inference tool
ICSE 2015, Proceedings of the 37th International Conference on Software Engineering, 2015: 234–245.
, https://docs.google.com/presentation/d/1huP5pbe-ohrRSt5ASwsflFJYX0Y877a6... slides (Google Slides)
https://github.com/reprogrammer/cascade Cascade tool
https://github.com/reprogrammer/tqi-study user study materials
https://homes.cs.washington.edu/~mernst/pubs/cascade-typeinference-icse2... PDF
https://homes.cs.washington.edu/~mernst/pubs/cascade-typeinference-icse2... slides (PDF)
Static analysis of implicit control flow: Resolving Java reflection and Android intents
University of Washington Department of Computer Science and Engineering:UW-CSE-15-05-01, 2015.
, https://types.cs.washington.edu/sparta/ SPARTA toolset
https://checkerframework.org/ Checker Framework
Toward a dependability case language and workflow for a radiation therapy system
SNAPL 2015: the Inaugural Summit oN Advances in Programming Languages, 2015: 103–112.
, https://homes.cs.washington.edu/~mernst/pubs/dependability-case-snapl201... PDF
https://homes.cs.washington.edu/~mernst/pubs/dependability-case-snapl201... slides (PDF)
Using declarative specification to improve the understanding, extensibility, and comparison of model-inference algorithms
IEEE Transactions on Software Engineering 41:4, 2015: 408–428.
, https://homes.cs.washington.edu/~mernst/pubs/fsm-inference-declarative-i... ICSE 2013 slides (PDF)
https://github.com/ModelInference/synoptic InvariMint implementation
https://homes.cs.washington.edu/~mernst/pubs/fsm-inference-declarative-t... PDF
When tests collide: Evaluating and coping with the impact of test dependence
University of Washington Department of Computer Science and Engineering:UW-CSE-15-03-01, 2015.
, A data programming CS1 course
SIGCSE: Proceedings of the 46th ACM Technical Symposium on Computer Science Education, 2015: 150–155.
, https://homes.cs.washington.edu/~mernst/teaching/data-programming/ Data Programming class at UW
https://homes.cs.washington.edu/~mernst/pubs/data-programming-sigcse2015... PDF
2014
Are mutants a valid substitute for real faults in software testing?
FSE 2014: Proceedings of the ACM SIGSOFT 22nd Symposium on the Foundations of Software Engineering, 2014: 654–665.
, https://defects4j.org/ Defects4J subject programs
https://mutation-testing.org/ Major mutation tool
https://homes.cs.washington.edu/~mernst/pubs/mutation-effectiveness-fse2... PDF
https://homes.cs.washington.edu/~mernst/pubs/mutation-effectiveness-fse2... slides (PDF)
Collaborative verification of information flow for a high-assurance app store
CCS 2014: Proceedings of the 21st ACM Conference on Computer and Communications Security, 2014: 1092–1104.
, https://types.cs.washington.edu/sparta/ SPARTA toolset and experimental data
https://homes.cs.washington.edu/~mernst/pubs/infoflow-ccs2014.pdf PDF
https://homes.cs.washington.edu/~mernst/pubs/infoflow-ccs2014-slides.pdf slides (PDF)
Cascade: A universal type qualifier inference tool
University of Illinois at Urbana-Champaign, 2014.
, https://www.ideals.illinois.edu/bitstream/handle/2142/54893/2015-icse-tq... PDF
https://hdl.handle.net/2142/54893 IDEALS permalink
Defects4J: A Database of existing faults to enable controlled testing studies for Java programs
ISSTA 2014, Proceedings of the 2014 International Symposium on Software Testing and Analysis, 2014: 437–440. Tool demo
, https://defects4j.org/ Defects4J website
https://homes.cs.washington.edu/~mernst/pubs/bug-database-issta2014.pdf PDF
Efficient mutation analysis by propagating and partitioning infected execution states
ISSTA 2014, Proceedings of the 2014 International Symposium on Software Testing and Analysis, 2014: 315–326.
, https://mutation-testing.org/ Major mutation framework and experimental data
https://homes.cs.washington.edu/~mernst/pubs/state-infection-issta2014.pdf PDF
https://homes.cs.washington.edu/~mernst/pubs/state-infection-issta2014-s... slides (PDF)
Empirically revisiting the test independence assumption
ISSTA 2014, Proceedings of the 2014 International Symposium on Software Testing and Analysis, 2014: 385–396.
, A type system for format strings
ISSTA 2014, Proceedings of the 2014 International Symposium on Software Testing and Analysis, 2014: 127–137.
, https://homes.cs.washington.edu/~mernst/pubs/format-string-issta2014-dem... demo paper (PDF)
https://checkerframework.org/manual/#formatter-checker Format String Checker implementation
https://homes.cs.washington.edu/~mernst/pubs/format-string-issta2014.pdf PDF
https://homes.cs.washington.edu/~mernst/pubs/format-string-issta2014-sli... slides (PDF)
A format string checker for Java
ISSTA 2014, Proceedings of the 2014 International Symposium on Software Testing and Analysis, 2014: 441–444.
, Inferring models of concurrent systems from logs of their behavior with CSight
ICSE 2014, Proceedings of the 36th International Conference on Software Engineering, 2014: 468–479.
, https://github.com/ModelInference/synoptic CSight implementation
https://homes.cs.washington.edu/~mernst/pubs/concurrent-models-icse2014.pdf PDF
https://homes.cs.washington.edu/~mernst/pubs/concurrent-models-icse2014-... slides (PDF)
Case studies and tools for contract specifications
ICSE 2014, Proceedings of the 36th International Conference on Software Engineering, 2014: 596–607.
, https://plse.cs.washington.edu/code-contracts/ data and tools
https://homes.cs.washington.edu/~mernst/pubs/contract-specifications-ics... PDF
https://homes.cs.washington.edu/~mernst/pubs/contract-specifications-ics... slides (PDF)
User scripting on Android using BladeDroid
APSys 2014: 5th Asia-Pacific Workshop on Systems, 2014: 9:1–9:7.
, Shedding light on distributed system executions
ICSE 2014, Proceedings of the 36th International Conference on Software Engineering, 2014: 598–599.
, https://bestchai.bitbucket.io/shiviz/ online deployment (try it!)
https://github.com/DistributedClocks/shiviz ShiVector and ShiViz source code
https://bestchai.bitbucket.io/shiviz-demo/ video demo (YouTube)
https://homes.cs.washington.edu/~mernst/pubs/shivector-shiviz-icse2014.pdf PDF
Which configuration option should I change?
ICSE 2014, Proceedings of the 36th International Conference on Software Engineering, 2014: 152–163.
, https://github.com/zhang-sai/config-errors ConfSuggester implementation
https://homes.cs.washington.edu/~mernst/pubs/confsuggester-icse2014.pdf PDF
https://homes.cs.washington.edu/~mernst/pubs/confsuggester-icse2014-slid... slides (PDF)
User scripting on Android using BladeDroid
NSDI 2014: 11th USENIX Symposium on Networked Systems Design and Implementation, 2014.
, Introductory programming meets the real world: Using real problems and data in CS1
SIGCSE: Proceedings of the 45th ACM Technical Symposium on Computer Science Education, 2014: 465–466.
, https://homes.cs.washington.edu/~mernst/teaching/data-programming/ Data Programming class at UW
https://homes.cs.washington.edu/~mernst/pubs/data-programming-sigcse2014... PDF
Are mutants a valid substitute for real faults in software testing?
University of Washington Department of Computer Science and Engineering:UW-CSE-14-02-02, 2014.
, Inferring models of concurrent systems from logs of their behavior with CSight
University of British Columbia, 2014. \urlhttps://hdl.handle.net/2429/46122
, https://github.com/ModelInference/synoptic CSight implementation
Empirically revisiting the test independence assumption
University of Washington Department of Computer Science and Engineering:UW-CSE-14-01-01, 2014.
, Annotations on Java types
, 2014. Proposed Final Draft.2013
Type Annotations specification (JSR 308)
https://checkerframework.org/jsr308/ current status and implementation
https://jcp.org/en/jsr/detail?id=308 original proposal
Type Annotations specification (JSR 308)
https://checkerframework.org/jsr308/ current status and implementation
https://jcp.org/en/jsr/detail?id=308 original proposal
Interactive record/replay for web application debugging
UIST 2013: Proceedings of the 26th ACM Symposium on User Interface Software and Technology, 2013: 473–484.
, https://github.com/burg/replay-staging/ Timelapse implementation
https://homes.cs.washington.edu/~mernst/pubs/record-replay-uist2013.pdf PDF
https://homes.cs.washington.edu/~mernst/pubs/record-replay-uist2013-slid... slides (PDF)
Early detection of collaboration conflicts and risks
IEEE Transactions on Software Engineering 39:10, 2013: 1358–1375.
, https://homes.cs.washington.edu/~mernst/pubs/vc-conflicts-fse2011-slides... ESEC/FSE 2011 slides (PDF)
https://homes.cs.washington.edu/~mernst/pubs/vc-conflicts-fse2011-toolde... tool demo paper (PDF)
https://github.com/brunyuriy/crystalvc Crystal implementation
https://homes.cs.washington.edu/~mernst/pubs/vc-conflicts-tse2013.pdf PDF
Making offline analyses continuous
ESEC/FSE 2013: The 9th joint meeting of the European Software Engineering Conference (ESEC) and the ACM SIGSOFT Symposium on the Foundations of Software Engineering (FSE), 2013: 323–333.
, https://bitbucket.org/kivancmuslu/solstice/ Solstice implementation
Making Offline Analyses Continuous
the 9th joint meeting of the European Software Engineering Conference and the Symposium on the Foundations of Software Engineering (FSE), 2013.
, https://bitbucket.org/kivancmuslu/solstice Implementation
JavaUI: Effects for controlling UI object access
ECOOP 2013 –- Object-Oriented Programming, 27th European Conference, 2013: 179–204.
, https://homes.cs.washington.edu/~mernst/pubs/gui-thread-tr20130401.pdf technical report (PDF)
https://checkerframework.org/manual/#guieffect-checker JavaUI implementation
https://github.com/csgordon/javaui older implementation and annotated subject programs
https://homes.cs.washington.edu/~mernst/pubs/gui-thread-ecoop2013.pdf PDF
https://homes.cs.washington.edu/~mernst/pubs/gui-thread-ecoop2013-slides... slides (PDF)
Automatically repairing broken workflows for evolving GUI applications
ISSTA 2013, Proceedings of the 2013 International Symposium on Software Testing and Analysis, 2013: 45–55.
, https://code.google.com/archive/p/workflow-repairer/ FlowFixer implementation
https://homes.cs.washington.edu/~mernst/pubs/repair-workflow-issta2013.pdf PDF
https://homes.cs.washington.edu/~mernst/pubs/repair-workflow-issta2013-s... slides (PDF)
Rely-guarantee references for refinement types over aliased mutable data
PLDI 2013: Proceedings of the ACM SIGPLAN 2013 Conference on Programming Language Design and Implementation, 2013: 73–84.
, https://homes.cs.washington.edu/~mernst/pubs/rely-guarantee-ref-tr130302... technical report
https://github.com/csgordon/rgref/ implementation
https://homes.cs.washington.edu/~mernst/pubs/rely-guarantee-ref-pldi2013... PDF
https://homes.cs.washington.edu/~mernst/pubs/rely-guarantee-ref-pldi2013... slides (PDF)
Unifying FSM-inference algorithms through declarative specification
ICSE 2013, Proceedings of the 35th International Conference on Software Engineering, 2013: 252–261.
, https://homes.cs.washington.edu/~mernst/pubs/fsm-inference-declarative-t... TR UW-CSE-13-03-01
https://github.com/ModelInference/synoptic InvariMint implementation
Automated diagnosis of software configuration errors
ICSE 2013, Proceedings of the 35th International Conference on Software Engineering, 2013: 312–321.
, https://github.com/zhang-sai/config-errors ConfDiagnoser implementation
https://homes.cs.washington.edu/~mernst/pubs/configuration-errors-icse20... PDF
https://homes.cs.washington.edu/~mernst/pubs/configuration-errors-icse20... slides (PDF)
Immutability
Aliasing in Object-Oriented Programming, Springer-Verlag 7850, 2013: 233–269.
, Unifying FSM-inference algorithms through declarative specification
University of Washington Department of Computer Science and Engineering:UW-CSE-13-03-01, 2013.
, 2012
HAMPI: A solver for word equations over strings, regular expressions, and context-free grammars
ACM Transactions on Software Engineering and Methodology 21:4, 2012: 25:1–25:28.
, https://people.csail.mit.edu/akiezun/hampi/ HAMPI implementation and experiments
https://homes.cs.washington.edu/~mernst/pubs/string-solver-tosem2012.pdf ISSTA 2009 slides (PDF)
https://homes.cs.washington.edu/~mernst/pubs/string-solver-tosem2012.pdf PDF
Speculative analysis of integrated development environment recommendations
OOPSLA 2012, Object-Oriented Programming Systems, Languages, and Applications, 2012: 669–682.
, https://github.com/brunyuriy/quick-fix-scout implementation
https://homes.cs.washington.edu/~mernst/pubs/quick-fix-scout-oopsla2012.pdf PDF
https://homes.cs.washington.edu/~mernst/pubs/quick-fix-scout-oopsla2012-... slides (PDF)
Reducing the barriers to writing verified specifications
OOPSLA 2012, Object-Oriented Programming Systems, Languages, and Applications, 2012: 95–112.
, https://plse.cs.washington.edu/veriweb/ study materials
https://homes.cs.washington.edu/~mernst/pubs/veriweb-oopsla2012.pdf PDF
https://homes.cs.washington.edu/~mernst/pubs/veriweb-oopsla2012-slides.pdf slides (PDF)
ReIm & ReImInfer: Checking and inference of reference immutability and method purity
OOPSLA 2012, Object-Oriented Programming Systems, Languages, and Applications, 2012: 879–896.
, https://www.cs.rpi.edu/~huangw5/cf-inference/ implementation
https://homes.cs.washington.edu/~mernst/pubs/infer-refimmutability-oopsl... PDF
https://homes.cs.washington.edu/~mernst/pubs/infer-refimmutability-oopsl... slides (PDF)
Unifying FSM-inference algorithms through declarative specification
University of Washington Department of Computer Science and Engineering:UW-CSE-12-08-02, 2012.
, Finding errors in multithreaded GUI applications
ISSTA 2012, Proceedings of the 2012 International Symposium on Software Testing and Analysis, 2012: 243–253.
, https://github.com/zhang-sai/guierrordetector implementation
https://homes.cs.washington.edu/~mernst/pubs/gui-thread-issta2012.pdf PDF
https://homes.cs.washington.edu/~mernst/pubs/gui-thread-issta2012-slides... slides (PDF)
https://homes.cs.washington.edu/~mernst/pubs/gui-thread-tr130401.pdf extended version (PDF)
CBCD: Cloned Buggy Code Detector
ICSE 2012, Proceedings of the 34th International Conference on Software Engineering, 2012: 310–320.
, https://homes.cs.washington.edu/~mernst/pubs/buggy-clones-tr110502.pdf TR UW-CSE-11-05-02
https://homes.cs.washington.edu/~mernst/pubs/buggy-clones-icse2012.pdf PDF
A type system for regular expressions
FTfJP: 14th Workshop on Formal Techniques for Java-like Programs, 2012: 20–26.
, https://checkerframework.org/manual/#regex-checker Regex Checker implementation
https://homes.cs.washington.edu/~mernst/pubs/regex-types-ftfjp2012.pdf PDF
https://homes.cs.washington.edu/~mernst/pubs/regex-types-ftfjp2012-slide... slides (PDF)
Verification games: Making verification fun
FTfJP: 14th Workshop on Formal Techniques for Java-like Programs, 2012: 42–49.
, https://homes.cs.washington.edu/~mernst/pubs/verigames-ftfjp2012.pdf PDF
https://homes.cs.washington.edu/~mernst/pubs/verigames-ftfjp2012-slides.pdf slides (PDF)
Inference and checking of object ownership
ECOOP 2012 –- Object-Oriented Programming, 26th European Conference, 2012: 181–206.
, https://www.cs.rpi.edu/~huangw5/cf-inference/ implementation
https://homes.cs.washington.edu/~mernst/pubs/infer-ownership-ecoop2012.pdf PDF
https://homes.cs.washington.edu/~mernst/pubs/infer-ownership-ecoop2012-s... slides (PDF)
Improving IDE Recommendations by Considering Global Implications of Existing Recommendations
Proceedings of the 34th International Conference on Software Engineering (New Ideas and Emerging Results Track), 2012.
, http://files.kivancmuslu.com/Publications/2012/MusluBHEN2012icse.pdf PDF
http://files.kivancmuslu.com/Publications/2012/MusluBHEN2012icse.bib BibTex
http://files.kivancmuslu.com/Publications/2012/MusluBHEN2012icse-slides.pdf Slides
Predicting Development Trajectories to Prevent Collaboration Conflicts
Proceedings of the 2012 Computer Supported Cooperative Work Working Conference on the Future of Collaborative Software Development, 2012.
, http://files.kivancmuslu.com/Publications/2012/BrunMHEN2012fcsd.pdf PDF
http://files.kivancmuslu.com/Publications/2012/BrunMHEN2012fcsd.bib BibTex
http://files.kivancmuslu.com/Publications/2012/BrunMHEN2012fcsd-poster.pdf Poster
Predicting development trajectories to prevent collaboration conflicts
FutureCSD 2012: The Future of Collaborative Software Development, 2012.
, https://homes.cs.washington.edu/~mernst/pubs/speculate-predict-fcsd2012-... poster (PowerPoint)
https://homes.cs.washington.edu/~mernst/pubs/speculate-predict-fcsd2012.pdf PDF
Static lock capabilities for deadlock freedom
TLDI 2012: The seventh ACM SIGPLAN Workshop on Types in Language Design and Implementation, 2012: 67–78.
, https://homes.cs.washington.edu/~mernst/pubs/lock-capabilities-tldi2012.pdf PDF
https://homes.cs.washington.edu/~mernst/pubs/lock-capabilities-tldi2012-... slides (PDF)
Static Lock Capabilities for Deadlock Freedom
Workshop on Types in Language Design and Implementation (TLDI), 2012.
, http://dl.acm.org/citation.cfm?id=2103786 ACM
http://homes.cs.washington.edu/~csgordon/papers/tldi12.pdf PDF
ftp://ftp.cs.washington.edu/tr/2011/10/UW-CSE-11-10-01.PDF TR
The HaLoop approach to large-scale iterative data analysis
The VLDB Journal 21:2, 2012: 169–190.
, https://homes.cs.washington.edu/~mernst/pubs/haloop-vldb2010-slides.pdf VLDB 2010 slides (PDF)
https://homes.cs.washington.edu/~mernst/pubs/haloop-vldb2010-slides.ppt VLDB 2010 slides (PowerPoint)
https://code.google.com/archive/p/haloop/ HaLoop implementation
https://homes.cs.washington.edu/~mernst/pubs/haloop-vldb2012.pdf PDF
2011
Mining temporal invariants from partially ordered logs
SIGOPS Operating Systems Review 45:3, 2011: 39–46.
, Scaling up automated test generation: Automatically generating maintainable regression unit tests for programs
ASE 2011: Proceedings of the 26th Annual International Conference on Automated Software Engineering, 2011: 23–32.
, https://randoop.github.io/randoop/ Randoop implementation
https://homes.cs.washington.edu/~mernst/pubs/maintainable-tests-ase2011.pdf PDF
Automated documentation inference to explain failed tests
ASE 2011: Proceedings of the 26th Annual International Conference on Automated Software Engineering, 2011: 63–72.
, https://code.google.com/archive/p/failuredoc/ FailureDoc implementation
https://homes.cs.washington.edu/~mernst/pubs/test-documentation-ase2011.pdf PDF
https://homes.cs.washington.edu/~mernst/pubs/test-documentation-ase2011-... slides (PDF)
Type Annotations specification (JSR 308)
https://checkerframework.org/jsr308/ current status and implementation
https://jcp.org/en/jsr/detail?id=308 original proposal
Mining temporal invariants from partially ordered logs
SLAML 2011: Workshop on Managing Large-Scale Systems via the Analysis of System Logs and the Application of Machine Learning Techniques (SLAML '11), 2011. Article No. 3
, Bandsaw: Log-powered test scenario generation for distributed systems
SOSP WIP: Proceedings of the 23rd ACM Symposium on Operating Systems Principles, Work In Progress Track, 2011.
, Static lock capabilities for deadlock freedom
University of Washington Department of Computer Science and Engineering:UW-CSE-11-10-01, 2011.
, Leveraging existing instrumentation to automatically infer invariant-constrained models
ESEC/FSE 2011: The 8th joint meeting of the European Software Engineering Conference (ESEC) and the ACM SIGSOFT Symposium on the Foundations of Software Engineering (FSE), 2011: 267–277.
, https://github.com/ModelInference/synoptic Synoptic implementation
https://homes.cs.washington.edu/~mernst/pubs/synoptic-fse2011-tool-demo.pdf tool demo paper (PDF)
https://homes.cs.washington.edu/~mernst/pubs/synoptic-fse2011.pdf PDF
Proactive detection of collaboration conflicts
ESEC/FSE 2011: The 8th joint meeting of the European Software Engineering Conference (ESEC) and the ACM SIGSOFT Symposium on the Foundations of Software Engineering (FSE), 2011: 168–178.
, https://github.com/brunyuriy/crystalvc Crystal implementation
https://people.cs.umass.edu/~brun/video/Brun11esecfse/ video of talk
https://homes.cs.washington.edu/~mernst/pubs/vc-conflicts-fse2011-toolde... tool demo paper (PDF)
HAMPI: a string solver for testing, analysis and vulnerability detection
CAV 2011: 23rd International Conference on Computer Aided Verification, 2011: 1–19.
, Combined static and dynamic automated test generation
ISSTA 2011, Proceedings of the 2011 International Symposium on Software Testing and Analysis, 2011: 353–363.
, https://code.google.com/archive/p/tpalus/ implementation
https://homes.cs.washington.edu/~mernst/pubs/palus-testgen-issta2011.pdf PDF
https://homes.cs.washington.edu/~mernst/pubs/palus-testgen-issta2011.pdf slides (PDF)
https://homes.cs.washington.edu/~mernst/pubs/palus-testgen-issta2011.pdf slides (PowerPoint)
Tunable static inference for Generic Universe Types
ECOOP 2011 –- Object-Oriented Programming, 25th European Conference, 2011: 333–357.
, https://ece.uwaterloo.ca/~wdietl/inference/ Implementation and experiments
https://homes.cs.washington.edu/~mernst/pubs/tunable-typeinf-ecoop2011.pdf PDF
https://homes.cs.washington.edu/~mernst/pubs/tunable-typeinf-ecoop2011-s... slides (PDF)
Refactoring using type constraints
ACM Transactions on Pro\-gramming Languages and Systems 33:3, 2011: 9:1–9:47.
, Building and using pluggable type-checkers
ICSE 2011, Proceedings of the 33rd International Conference on Software Engineering, 2011: 681–690.
, https://checkerframework.org/ implementation
https://homes.cs.washington.edu/~mernst/pubs/pluggable-checkers-icse2011... PDF
https://homes.cs.washington.edu/~mernst/pubs/pluggable-checkers-icse2011... slides (PDF)
Always-available static and dynamic feedback
ICSE 2011, Proceedings of the 33rd International Conference on Software Engineering, 2011: 521–530.
, https://github.com/mernst/ductilej DuctileJ implementation
https://homes.cs.washington.edu/~mernst/pubs/ductile-icse2011.pdf PDF
https://homes.cs.washington.edu/~mernst/pubs/ductile-icse2011-slides.pdf slides (PDF)
Inference of field initialization
ICSE 2011, Proceedings of the 33rd International Conference on Software Engineering, 2011: 231–240.
, ftp://ftp.cs.washington.edu/tr/2010/02/UW-CSE-10-02-01.PDF earlier TR with additional details
https://homes.cs.washington.edu/~mernst/pubs/initialization-icse2011.pdf PDF
https://homes.cs.washington.edu/~mernst/pubs/initialization-icse2011-sli... slides (PDF)
How do programs become more concurrent? A story of program transformations
Proceedings of the 4th International Workshop on Multicore Software Engineering, 2011: 43–50.
, 2010
Speculative analysis: Exploring future development states of software
FoSER: Workshop on the Future of Software Engineering Research, 2010: 59–64.
, https://github.com/brunyuriy/quick-fix-scout Quick Fix Scout implementation
https://homes.cs.washington.edu/~mernst/pubs/speculation-foser2010.pdf PDF
https://homes.cs.washington.edu/~mernst/pubs/speculation-foser2010-slide... slides (PDF)
Rethinking the economics of software engineering
FoSER: Workshop on the Future of Software Engineering Research, 2010: 325–330.
, Ownership and immutability in generic Java
OOPSLA 2010, Object-Oriented Programming Systems, Languages, and Applications, 2010: 598–617.
, https://ecs.wgtn.ac.nz/foswiki/pub/Main/TechnicalReportSeries/ECSTR10-16... TR with proofs
https://homes.cs.washington.edu/~mernst/pubs/ownership-immutability-oops... PDF
Synoptic: Summarizing system logs with refinement
SLAML 2010: Workshop on Managing Systems via Log Analysis and Machine Learning Techniques (SLAML '10), 2010.
, https://github.com/ModelInference/synoptic implementation
Finding bugs in web applications using dynamic test generation and explicit state model checking
IEEE Transactions on Software Engineering 36:4, 2010: 474–494.
, 2009
Featherweight Ownership and Immutability Generic Java (FOIGJ)
VUW School of Engineering and Computer Science:09-13, 2009.
, Automatically patching errors in deployed software
SOSP 2009, Proceedings of the 22nd ACM Symposium on Operating Systems Principles, 2009: 87–102.
, https://homes.cs.washington.edu/~mernst/pubs/automatic-patching-sosp2009... PDF
https://homes.cs.washington.edu/~mernst/pubs/automatic-patching-sosp2009... Slides (PDF)
https://homes.cs.washington.edu/~mernst/pubs/automatic-patching-sosp2009... Slides (PowerPoint)
HAMPI: A solver for string constraints
ISSTA 2009, Proceedings of the 2009 International Symposium on Software Testing and Analysis, 2009: 105–116.
, https://people.csail.mit.edu/akiezun/hampi/ HAMPI implementation and experiments
https://homes.cs.washington.edu/~mernst/pubs/string-solver-issta2009.pdf PDF
Refactoring sequential Java code for concurrency via concurrent libraries
ICSE 2009, Proceedings of the 31st International Conference on Software Engineering, 2009: 397–407.
, https://web.archive.org/web/20170709075029/https://refactoring.info/tool... Concurrencer implementation
https://homes.cs.washington.edu/~mernst/pubs/concurrent-refactoring-icse... PDF
Automatic creation of SQL injection and cross-site scripting attacks
ICSE 2009, Proceedings of the 31st International Conference on Software Engineering, 2009: 199–209.
, https://groups.csail.mit.edu/pag/ardilla/ Experimental data
https://homes.cs.washington.edu/~mernst/pubs/create-attacks-icse2009.pdf PDF
https://homes.cs.washington.edu/~mernst/pubs/create-attacks-icse2009-sli... slides (PDF)
Parameter reference immutability: Formal definition, inference tool, and comparison
Automated Software Engineering 16:1, 2009: 145–192.
, https://homes.cs.washington.edu/~mernst/pubs/mutability-ase2007-slides.pdf slides (PDF)
https://homes.cs.washington.edu/~mernst/pubs/mutability-ase2007-slides.pptx slides (PowerPoint)
https://homes.cs.washington.edu/~mernst/pubs/mutability-jase2009.pdf PDF
2008
Type Annotations specification (JSR 308)
https://checkerframework.org/jsr308/ current status and implementation
https://jcp.org/en/jsr/detail?id=308 original proposal
Practical pluggable types for Java
ISSTA 2008, Proceedings of the 2008 International Symposium on Software Testing and Analysis, 2008: 201–212.
, https://homes.cs.washington.edu/~mernst/pubs/pluggable-types-issta2008-s... talk slides (PDF)
https://homes.cs.washington.edu/~mernst/pubs/pluggable-types-demo-slides... demo slides (PDF)
https://homes.cs.washington.edu/~mernst/pubs/pluggable-checkers-retrospe... ISSTA 2018 retrospective slides (PDF)
https://docs.google.com/presentation/d/1-DRyBQq-Afmu0nZnb7BK2vd95Nmr13O5... ISSTA 2018 retrospective slides (Google Slides)
https://groups.csail.mit.edu/pag/pubs/pluggable-checkers-papi-mengthesis... Papi thesis (PDF)
https://checkerframework.org/ Checker Framework implementation
https://homes.cs.washington.edu/~mernst/pubs/pluggable-checkers-issta200... PDF
ReCrash: Making software failures reproducible by preserving object states
ECOOP 2008 –- Object-Oriented Programming, 22nd European Conference, 2008: 542–565.
, https://groups.csail.mit.edu/pag/ReCrash/ ReCrash implementation
https://homes.cs.washington.edu/~mernst/pubs/reproduce-failures-ecoop200... PDF
Inference of reference immutability
ECOOP 2008 –- Object-Oriented Programming, 22nd European Conference, 2008: 616–641.
, https://groups.csail.mit.edu/pag/pubs/infer-refimmutability-quinonez-men... Quinonez thesis
https://types.cs.washington.edu/javari/javarifier/ Javarifier implementation
https://homes.cs.washington.edu/~mernst/pubs/infer-refimmutability-ecoop... PDF
Quantitative information flow as network flow capacity
PLDI 2008: Proceedings of the ACM SIGPLAN 2008 Conference on Programming Language Design and Implementation, 2008: 193–205.
, https://people.csail.mit.edu/smcc/projects/secret-flow/flowcheck.html Flowcheck implementation
https://groups.csail.mit.edu/pag/pubs/secret-max-flow-pldi2008.pdf PDF
Theories in practice: Easy-to-write specifications that catch bugs
MIT Computer Science and Artificial Intelligence Laboratory:MIT-CSAIL-TR-2008-002, 2008.
, 2007
The Daikon system for dynamic detection of likely invariants
https://plse.cs.washington.edu/daikon/ Daikon implementation
https://homes.cs.washington.edu/~mernst/pubs/daikon-tool-scp2007.pdf PDF
Annotations on Java types: JSR 308 working document
https://checkerframework.org/jsr308/ current status and implementation
https://jcp.org/en/jsr/detail?id=308 original proposal
JSR 308: Annotations on Java types
https://checkerframework.org/jsr308/ current status and implementation
https://jcp.org/en/jsr/detail?id=308 original proposal
Tools for enforcing and inferring reference immutability in Java
OOPSLA Companion: Object-Oriented Programming Systems, Languages, and Applications, 2007: 866–867.
, https://types.cs.washington.edu/javari/ Javari implementation
https://homes.cs.washington.edu/~mernst/pubs/refimmut-tools-oopsla2007.pdf PDF
Which warnings should I fix first?
ESEC/FSE 2007: Proceedings of the 11th European Software Engineering Conference and the 15th ACM SIGSOFT Symposium on the Foundations of Software Engineering, 2007: 45–54.
, Object and reference immutability using Java generics
ESEC/FSE 2007: Proceedings of the 11th European Software Engineering Conference and the 15th ACM SIGSOFT Symposium on the Foundations of Software Engineering, 2007: 75–84.
, https://checkerframework.org/manual/#igj-checker IGJ implementation
https://homes.cs.washington.edu/~mernst/pubs/immutability-generics-fse20... PDF
A simulation-based proof technique for dynamic information flow
PLAS 2007: ACM SIGPLAN Workshop on Programming Languages and Analysis for Security, 2007: 41–46.
, Prioritizing warnings by analyzing software history
MSR 2007: International Workshop on Mining Software Repositories, 2007: 27–30.
, Feedback-directed random test generation
ICSE 2007, Proceedings of the 29th International Conference on Software Engineering, 2007: 75–84.
, https://homes.cs.washington.edu/~mernst/pubs/feedback-testgen-issta2008-... ISSTA'08 slides (PowerPoint)
https://homes.cs.washington.edu/~mernst/pubs/feedback-testgen-icse2017-m... ICSE 2017 retrospective slides (PDF)
https://homes.cs.washington.edu/~mernst/pubs/feedback-testgen-icse2017-m... ICSE 2017 retrospective slides (PowerPoint)
https://randoop.github.io/randoop/ Randoop implementation
https://homes.cs.washington.edu/~mernst/pubs/feedback-testgen-icse2007.pdf PDF
https://homes.cs.washington.edu/~mernst/pubs/feedback-testgen-icse2007-s... slides (PDF)
https://homes.cs.washington.edu/~mernst/pubs/feedback-testgen-icse2007-s... slides (PowerPoint)
Refactoring for parameterizing Java classes
ICSE 2007, Proceedings of the 29th International Conference on Software Engineering, 2007: 437–446.
, https://homes.cs.washington.edu/~mernst/pubs/parameterizing-generics-ics... PDF
https://homes.cs.washington.edu/~mernst/pubs/parameterizing-generics-ics... slides (PDF)
2006
The Groupthink specification exercise
ICSE Education and Training Track: Software Engineering Education in the Modern Age: Challenges and Possibilities, PostProceedings of ICSE '05 Education and Training Track, Springer 4309, 2006: 89–107.
, https://homes.cs.washington.edu/~mernst/pubs/groupthink-specification-ex... activity materials
https://homes.cs.washington.edu/~mernst/software/UpopVote.zip optional voting software
https://homes.cs.washington.edu/~mernst/pubs/groupthink-icse2005-slides.pdf ICSE 2005 slides (PDF)
https://homes.cs.washington.edu/~mernst/pubs/groupthink-icse2005-slides.ppt ICSE 2005 slides (PowerPoint)
https://homes.cs.washington.edu/~mernst/pubs/groupthink-2006.pdf PDF
https://homes.cs.washington.edu/~mernst/pubs/groupthink-2006-2up.pdf 2-up PDF
Quantitative information-flow tracking for C and related languages
MIT Computer Science and Artificial Intelligence Laboratory:MIT-CSAIL-TR-2006-076, 2006.
, https://groups.csail.mit.edu/pag/pubs/secret-tracking-tr076.pdf PDF
https://dspace.mit.edu/handle/1721.1/34892 DSpace
JSR 308: Annotations on Java types
https://checkerframework.org/jsr308/ current status and implementation
https://jcp.org/en/jsr/detail?id=308 original proposal
Finding the needles in the haystack: Generating legal test inputs for object-oriented programs
M-TOOS: 1st Workshop on Model-Based Testing and Object-Oriented Systems, 2006: 27–34.
, Combined static and dynamic mutability analysis
MIT Computer Science and Artificial Intelligence Laboratory:MIT-CSAIL-TR-2006-065, 2006.
, An empirical comparison of automated generation and classification techniques for object-oriented unit testing
ASE 2006: Proceedings of the 21st Annual International Conference on Automated Software Engineering, 2006: 59–68.
, Feedback-directed random test generation
Microsoft Research:MSR-TR-2006-125, 2006.
, Refactoring for parameterizing Java classes
MIT Computer Science and Artificial Intelligence Laboratory:MIT-CSAIL-TR-2006-061, 2006.
, Inference and enforcement of data structure consistency specifications
ISSTA 2006, Proceedings of the 2006 International Symposium on Software Testing and Analysis, 2006: 233–243.
, Dynamic inference of abstract types
ISSTA 2006, Proceedings of the 2006 International Symposium on Software Testing and Analysis, 2006: 255–265.
, https://plse.cs.washington.edu/daikon/ DynComp implementation (distributed as part of Daikon)
https://homes.cs.washington.edu/~mernst/pubs/abstract-type-issta2006.pdf PDF
Detection of web service substitutability and composability
WS-MaTe: International Workshop on Web Services –- Modeling and Testing, 2006: 123–135.
, 2005
Learning from executions: Dynamic analysis for software engineering and program understanding
https://homes.cs.washington.edu/~mernst/pubs/dynamic-tutorial-ase2005-ma... slides 1 (PDF)
https://homes.cs.washington.edu/~mernst/pubs/dynamic-tutorial-ase2005-ja... slides 2 (PDF)
https://homes.cs.washington.edu/~mernst/pubs/dynamic-tutorial-ase2005-co... slides 3 (PDF)
https://homes.cs.washington.edu/~mernst/pubs/dynamic-tutorial-ase2005-da... slides 4 (PDF)
Automatic test factoring for Java
ASE 2005: Proceedings of the 20th Annual International Conference on Automated Software Engineering, 2005: 114–123.
, Using predicate fields in a highly flexible industrial control system
OOPSLA 2005, Object-Oriented Programming Systems, Languages, and Applications, 2005: 319–330.
, Javari: Adding reference immutability to Java
OOPSLA 2005, Object-Oriented Programming Systems, Languages, and Applications, 2005: 211–230.
, https://groups.csail.mit.edu/pag/pubs/tschantz-refimmut-mengthesis.pdf extended version (PDF)
https://types.cs.washington.edu/javari/ Javari implementation
https://homes.cs.washington.edu/~mernst/pubs/ref-immutability-oopsla2005... PDF
https://homes.cs.washington.edu/~mernst/pubs/ref-immutability-oopsla2005... slides (PowerPoint)
Verification for legacy programs
VSTTE 2005: Verified Software: Theories, Tools, Experiments, 2005.
, https://homes.cs.washington.edu/~mernst/pubs/legacy-verification-vstte20... PDF
https://homes.cs.washington.edu/~mernst/pubs/legacy-verification-vstte20... slides (PDF)
PASTE: ACM SIGPLAN/SIGSOFT Workshop on Program Analysis for Software Tools and Engineering
, 2005.
https://homes.cs.washington.edu/~mernst/meetings/paste2005/ workshop website
Eclat: Automatic generation and classification of test inputs
ECOOP 2005 –- Object-Oriented Programming, 19th European Conference, 2005: 504–527.
, https://groups.csail.mit.edu/pag/eclat/ Eclat implementation
https://randoop.github.io/randoop/ Randoop implementation
https://homes.cs.washington.edu/~mernst/pubs/classify-tests-ecoop2005.pdf PDF
Static deadlock detection for Java libraries
ECOOP 2005 –- Object-Oriented Programming, 19th European Conference, 2005: 602–629.
, An overview of JML tools and applications
Software Tools for Technology Transfer 7:3, 2005: 212–232.
, The Groupthink specification exercise
ICSE 2005, Proceedings of the 27th International Conference on Software Engineering, 2005: 617–618.
, 2004
Efficient incremental algorithms for dynamic detection of likely invariants
FSE 2004: Proceedings of the ACM SIGSOFT 12th Symposium on the Foundations of Software Engineering, 2004: 23–32.
, https://plse.cs.washington.edu/daikon/ Daikon implementation
https://homes.cs.washington.edu/~mernst/pubs/invariants-incremental-fse2... PDF
https://homes.cs.washington.edu/~mernst/pubs/invariants-incremental-fse2... slides (PDF)
A practical type system and language for reference immutability
OOPSLA 2004, Object-Oriented Programming Systems, Languages, and Applications, 2004: 35–49.
, https://types.cs.washington.edu/javari/ Javari implementation
https://homes.cs.washington.edu/~mernst/pubs/ref-immutability-oopsla2004... PDF
https://homes.cs.washington.edu/~mernst/pubs/ref-immutability-oopsla2004... slides (PDF)
Formalizing lightweight verification of software component composition
SAVCBS 2004: Specification and Verification of Component-Based Systems, 2004: 47–54.
, Converting Java programs to use generic libraries
OOPSLA 2004, Object-Oriented Programming Systems, Languages, and Applications, 2004: 15–34.
, https://homes.cs.washington.edu/~mernst/pubs/instantiating-generics-oops... PDF
https://homes.cs.washington.edu/~mernst/pubs/instantiating-generics-oops... slides (PDF)
Eclat: Automatic generation and classification of test inputs
MIT Laboratory for Computer Science:968, 2004.
, Improving adaptability via program steering
ISSTA 2004, Proceedings of the 2004 International Symposium on Software Testing and Analysis, 2004: 206–216.
, https://homes.cs.washington.edu/~mernst/pubs/steering-issta2004.pdf PDF
https://homes.cs.washington.edu/~mernst/pubs/steering-issta2004.ppt slides (PowerPoint)
An experimental evaluation of continuous testing during development
ISSTA 2004, Proceedings of the 2004 International Symposium on Software Testing and Analysis, 2004: 76–85.
, https://groups.csail.mit.edu/pag/continuoustesting/ Eclipse plug-in
https://homes.cs.washington.edu/~mernst/pubs/ct-user-study-issta2004.pdf PDF
Using simulated execution in verifying distributed algorithms
Software Tools for Technology Transfer 6:1, 2004: 67–76.
, https://homes.cs.washington.edu/~mernst/pubs/simexecution-vmcai2003-slid... slides (PDF)
https://homes.cs.washington.edu/~mernst/pubs/simexecution-vmcai2003-slid... slides (PowerPoint)
https://homes.cs.washington.edu/~mernst/pubs/simexecution-sttt2004.pdf PDF
Early identification of incompatibilities in multi-component upgrades
ECOOP 2004 –- Object-Oriented Programming, 18th European Conference, 2004: 440–464.
, Automatic mock object creation for test factoring
PASTE 2004: ACM SIGPLAN/SIGSOFT Workshop on Program Analysis for Software Tools and Engineering (PASTE'04), 2004: 49–51.
, https://homes.cs.washington.edu/~mernst/pubs/mock-factoring-paste2004.pdf PDF
https://homes.cs.washington.edu/~mernst/pubs/mock-factoring-paste2004-sl... slides (PDF)
https://homes.cs.washington.edu/~mernst/pubs/mock-factoring-paste2004-sl... slides (PowerPoint)
Finding latent code errors via machine learning over program executions
ICSE 2004, Proceedings of the 26th International Conference on Software Engineering, 2004: 480–490.
, https://homes.cs.washington.edu/~mernst/pubs/machlearn-errors-icse2004.pdf PDF
https://homes.cs.washington.edu/~mernst/pubs/machlearn-errors-icse2004-s... slides (PDF)
Continuous testing in Eclipse
2nd Eclipse Technology Exchange Workshop (eTX), 2004.
, https://groups.csail.mit.edu/pag/continuoustesting/ Eclipse plug-in
https://homes.cs.washington.edu/~mernst/pubs/conttest-plugin-etx2004.pdf PDF
Predicting problems caused by component upgrades
MIT Laboratory for Computer Science:941, 2004. Revision of first author's Master's thesis
, 2003
Summary: Workshop on Dynamic Analysis (WODA 2003)
ACM SIGSOFT Software Engineering Notes 28:6, 2003: 27.
, Reducing wasted development time via continuous testing
ISSRE 2003: Fourteenth International Symposium on Software Reliability Engineering, 2003: 281–292.
, Predicting problems caused by component upgrades
ESEC/FSE 2003: Proceedings of the 9th European Software Engineering Conference and the 11th ACM SIGSOFT Symposium on the Foundations of Software Engineering, 2003: 287–296.
, Selecting, refining, and evaluating predicates for program analysis
MIT Laboratory for Computer Science:MIT-LCS-TR-914, 2003.
, WODA 2003: ICSE Workshop on Dynamic Analysis
, 2003.
https://www.cs.nmsu.edu/~jcook/woda2003/ workshop website
https://homes.cs.washington.edu/~mernst/pubs/woda2003-proceedings.pdf PDF
Static and dynamic analysis: Synergy and duality
WODA 2003: Workshop on Dynamic Analysis, 2003: 24–27.
, https://homes.cs.washington.edu/~mernst/pubs/staticdynamic-paste2004-sli... slides (PDF)
https://homes.cs.washington.edu/~mernst/pubs/staticdynamic-paste2004-sli... slides (PowerPoint)
https://homes.cs.washington.edu/~mernst/pubs/staticdynamic-woda2003.pdf PDF
Improving test suites via operational abstraction
ICSE 2003, Proceedings of the 25th International Conference on Software Engineering, 2003: 60–71.
, https://homes.cs.washington.edu/~mernst/pubs/improve-testsuite-slides.pdf talk slides (PDF)
https://homes.cs.washington.edu/~mernst/pubs/improve-testsuite-slides.ppt talk slides (PowerPoint)
https://homes.cs.washington.edu/~mernst/pubs/improve-testsuite-icse2003.pdf PDF
Using simulated execution in verifying distributed algorithms
VMCAI 2003: Fourth International Conference on Verification, Model Checking and Abstract Interpretation, 2003: 283–297.
, 2002
An empirical analysis of C preprocessor use
IEEE Transactions on Software Engineering 28:12, 2002: 1146–1170.
, https://homes.cs.washington.edu/~mernst/pubs/macros.tar.gz implementation
https://homes.cs.washington.edu/~mernst/pubs/c-preprocessor-tse2002.pdf PDF
Graphs induced by Gray codes
Discrete Mathematics 257, 2002: 585–598.
, Invariant inference for static checking: An empirical evaluation
FSE 2002, Proceedings of the ACM SIGSOFT 10th International Symposium on the Foundations of Software Engineering, 2002: 11–20.
, Automatic generation of program specifications
ISSTA 2002, Proceedings of the 2002 International Symposium on Software Testing and Analysis, 2002: 232–242.
, Verifying distributed algorithms via dynamic analysis and theorem proving
MIT Laboratory for Computer Science:841, 2002.
, 2001
Automated support for program refactoring using invariants
ICSM 2001: Proceedings of the International Conference on Software Maintenance, 2001: 736–743.
, Static verification of dynamically detected program invariants: Integrating Daikon and ESC/Java
RV 2001: Proceedings of the First Workshop on Runtime Verification, 2001.
, Panel: Perspectives on software engineering
ICSE 2001, Proceedings of the 23rd International Conference on Software Engineering, 2001: 699–702.
, https://homes.cs.washington.edu/~notkin/icse2001panel.htm slides (for all panelists)
https://homes.cs.washington.edu/~mernst/pubs/se-perspectives-panel-icse2... PDF
Dynamically discovering likely program invariants to support program evolution
IEEE Transactions on Software Engineering 27:2, 2001: 99–123.
, https://homes.cs.washington.edu/~mernst/pubs/invariants-icse99.pdf ICSE 1999 paper (PDF)
https://homes.cs.washington.edu/~mernst/pubs/invariants-icse99-slides.ppt ICSE 1999 talk slides (PowerPoint)
https://homes.cs.washington.edu/~mernst/pubs/invariants-icse99-slides.pdf ICSE 1999 talk slides (PDF)
https://plse.cs.washington.edu/daikon/ Daikon implementation
https://homes.cs.washington.edu/~mernst/pubs/invariants-tse2001.pdf PDF
2000
Dynamically Discovering Likely Program Invariants
University of Washington Department of Computer Science and Engineering, 2000.
, https://plse.cs.washington.edu/daikon/ Daikon implementation
https://homes.cs.washington.edu/~mernst/pubs/invariants-ernst-phdthesis.pdf PDF
Quickly detecting relevant program invariants
ICSE 2000, Proceedings of the 22nd International Conference on Software Engineering, 2000: 449–458.
, https://plse.cs.washington.edu/daikon/ Daikon implementation
https://homes.cs.washington.edu/~mernst/pubs/invariants-relevance-icse20... PDF
1999
Dynamically discovering pointer-based program invariants
University of Washington Department of Computer Science and Engineering:UW-CSE-99-11-02, 1999. Revised March 17, 2000
, https://plse.cs.washington.edu/daikon/ Daikon implementation
https://homes.cs.washington.edu/~mernst/pubs/invariants-pointers-tr99110... PDF
1998
Predicate dispatching: A unified theory of dispatch
ECOOP '98: the 12th European Conference on Object-Oriented Programming, 1998: 186–211.
, ftp://ftp.cs.washington.edu/homes/chambers/gud.tar.gz implementation
https://projectsweb.cs.washington.edu/research/projects/cecil/www/Gud/ma... manual
https://homes.cs.washington.edu/~mernst/pubs/dispatching-ecoop98.pdf PDF
https://homes.cs.washington.edu/~mernst/pubs/dispatching-ecoop98-slides.pdf slides (PDF)
1997
Automatic SAT-compilation of planning problems
IJCAI '97: IJCAI-97, Proceedings of the Fifteenth International Joint Conference on Artificial Intelligence, 1997: 1169–1176.
, ftp://ftp.cs.washington.edu/pub/ai/medic.tar.gz Medic implementation
https://homes.cs.washington.edu/~mernst/pubs/satcompile-ijcai97.pdf PDF
1996
Method and system for controlling unauthorized access to information distributed to users
, 1996. Assigned to Microsoft Corporation1995
IR '95: Intermediate Representations Workshop Proceedings
, 1995. \em ACM SIGPLAN Notices 30(3), March 1995
https://homes.cs.washington.edu/~mernst/meetings/ir95/ workshop website
https://dl.acm.org/citation.cfm?id=202530 ACM proceedings
Slicing pointers and procedures (abstract)
Microsoft Research:MSR-TR-95-23, 1995.
, https://homes.cs.washington.edu/~mernst/pubs/slicing-9705-slides.pdf slides (PDF)
https://homes.cs.washington.edu/~mernst/pubs/slicing-9705-slides.ppt slides (PowerPoint)
https://homes.cs.washington.edu/~mernst/pubs/slicing-tr9523.pdf PDF
Playing Konane mathematically: A combinatorial game-theoretic analysis
UMAP Journal 16:2, 1995: 95–121.
, https://homes.cs.washington.edu/~mernst/pubs/konane-talk.ppt talk slides (PowerPoint, 1/17/2001)
https://homes.cs.washington.edu/~mernst/software/games.tar.gz implementation
https://homes.cs.washington.edu/~mernst/pubs/konane-tr9524.pdf PDF
1994
Serializing parallel programs by removing redundant computation
MIT Laboratory for Computer Science:MIT/LCS/TR-638, 1994.
, Practical fine-grained static slicing of optimized code
Microsoft Research:MSR-TR-94-14, 1994.
, https://homes.cs.washington.edu/~mernst/pubs/slicing-9705-slides.pdf slides (PDF)
https://homes.cs.washington.edu/~mernst/pubs/slicing-9705-slides.ppt slides (PowerPoint)
https://homes.cs.washington.edu/~mernst/pubs/slicing-tr9414.pdf PDF
Heraclitean encryption
Microsoft Research:MSR-TR-94-13, 1994.
, Value dependence graphs: Representation without taxation
POPL '94: Proceedings of the 21st Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, 1994: 297–310.
, 1992
Intellectual property in computing: (How) should software be protected? An industry perspective
MIT Artificial Intelligence Laboratory:AIM-1369, 1992.
, https://homes.cs.washington.edu/~mernst/pubs/ipcolloq-press-release.pdf press release
https://homes.cs.washington.edu/~mernst/pubs/ipcolloq-transcript-aim1369... PDF
1989
Adequate Models for Recursive Program Schemes
MIT Department of Electrical Engineering and Computer Science, 1989.
, Self-reference in English
ML typechecking is not efficient
Papers of the MIT ACM Undergraduate Conference, 1989.
, Image/map correspondence using curve matching
AAAI Spring Symposium on Robot Navigation, 1989. Also published as Texas Instruments Technical Report CSC-SIUL-89-12
,