coordinates Microsoft's Research in Software Engineering in Redmond, USA. Our mission is to advance the state of the art in Software Engineering and to bring those advances to Microsoft’s businesses.
We are organized in five working groups spanning Compilers and Runtimes, Empirical Software Engineering, Formal Methods, Program Analysis, and Programming Languages, working on a variety of themes/projects:
|
Modeling and Design |
Advanced Graph Layout, DKAL, Formula | |
|
Synthesis |
||
|
Compilers |
||
|
Languages |
||
|
Verification |
Boogie, Code contracts, Dafny, F*, VCC | |
|
Testing |
Automatic test generation, Moles, Pex | |
|
Runtime Reliability |
RobustHeap, ToleRace, Yarra | |
|
Performance |
||
|
Symbolic Methods |
Automata, BEK, Duality, Rex, SymDiff, Z3 | |
|
Browser/JavaScript |
||
|
Concurrency & Parallelism |
||
|
Measurement and Prediction |
||
|
User Studies |
Games |
In the News
- NY Times's Fostering Tech Talent in Schools features the work of Peli de Halleux, teaching TouchDevelop in Seattle high schools as part of the TEALS program.
- CNN Money "Excel 2013’s coolest new feature that should have been available years ago" describes Flash Fill, the result of Sumit Gulwani's work on program synthesis for end-users.
- The Zing model checker, from Shaz Qadeer and Sriram Rajamani, used for verifying USB 3.0 protocols in Windows 8.
Awards
- Most Influential PLDI Paper Award (2012): Extended Static Checking for Java, Cormac Flanagan, K. Rustan M. Leino, Mark Lillibridge, Greg Nelson, James B. Saxe, Raymie Stata
- Most Influential OOPSLA Paper Award (2012): Reconsidering Custom Memory Allocation, Emery Berger, Benjamin G. Zorn, and Kathryn S. McKinley
- FSE Distinguished Paper Award (2012): Assessing the Value of Branches with What-if Analysis, Christian Bird and Thomas Zimmermann
- ICSE Software Engineering in Practice Best Paper Award (2012): Characterizing and Predicting Which Bugs Get Reopened, Thomas Zimmermann, Nachiappan Nagappan, Philip J. Guo, Brendan Murphy
Overviews
- Synthesis from Examples: Interaction Models and Algorithms, SYNASC 2012, Sumit Gulwani
- Spreadsheet Data Manipulation using Examples, CACM 2012, Sumit Gulwani, William Harris, Rishabh Singh
- TouchDevelop - Programming Cloud-Connected Mobile Devices via Touchscreen, Nikolai Tillmann, Michal Moskal, Jonathan de Halleux, and Manuel Fahndrich
Play with RiSE tools at www.rise4fun.com Sources Dafny: a verification-oriented programming language CCI: Common compiler infrastructure
Downloads
Z3: an automated theorem prover
Pex: parameterized unit testing
Boogie language/tool for program verification tools
Automata: symbolic automata
F*: verification of functional programs
Code contracts
CHESS: systematic concurrency testing
Advanced graph layout
VCC: verification of concurrent C programs
2013
- Loris D'Antoni and Margus Veanes, Equivalence of Extended Symbolic Finite Transducers, in 25th International Conference on Computer Aided Verification (CAV'13), Springer, July 2013
- Sam Blackshear and Shuvendu Lahiri, Almost-Correct Specifications: A Modular Semantic Framework for Assigning Confidence to Warnings, in Programming Language Design and Implementation (PLDI'13), ACM, June 2013
- Chris Hawblitzel, Ming Kawaguchi, Shuvendu K. Lahiri, and Henrique Rebelo, Towards Modularly Comparing Programs using Automated Theorem Provers, in International Conference on Automated Deduction (CADE '13), Springer, June 2013
- Thomas Ball, Peli de Halleux, Daan Leijen, and Nikhil Swamy, Increasing Human-Tool Interaction via the Web, in 11th ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering, ACM, June 2013
- Manuel Fahndrich and Francesco Logozzo, Proceedings of the 20th Static Analysis Symposium, Springer Verlag, June 2013
- Nikhil Swamy, Joel Weinberger, Cole Schlesinger, Juan Chen, and Benjamin Livshits, Verifying Higher-order Programs with the Dijkstra Monad, in ACM Programming Language Design and Implementation (PLDI) 2013, ACM, June 2013
- Sebastian Burckhardt, Manuel Fahndrich, Peli de Halleux, Jun Kato, Sean McDirmid, Michal Moskal, and Nikolai Tillmann, It's Alive! Continuous Feedback in UI Programming, in PLDI, ACM SIGPLAN, June 2013
- K. Rustan M. Leino and Michał Moskal, Co-induction Simply: Automatic Co-inductive Proofs in a Program Verifier, no. MSR-TR-2013-49, 1 May 2013
- Emerson Murphy-Hill, Thomas Zimmermann, Christian Bird, and Nachiappan Nagappan, The Design of Bug Fixes, in Proceedings of the 35th International Conference on Software Engineering (ICSE 2013), IEEE, May 2013
- Matthew Fredrikson and Benjamin Livshits, Z0: An Optimizing Distributing Zero-Knowledge Compiler, no. MSR-TR-2013-43, 9 April 2013
- Jeff Huang, Thomas Zimmermann, Nachiappan Nagappan, Charles Harrison, and Bruce Phillips, Mastering the Art of War: How Patterns of Gameplay Influence Skill in Halo, in Proceedings of the International Conference on Human Factors in Computing Systems (CHI 2013), ACM, April 2013
- James Bornholt, Todd Mytkowicz, and Kathryn S. McKinley, Uncertain<T>: A First-Order Type for Uncertain Data, no. MSR-TR-2013-46, April 2013
- Margus Veanes, Minimization of Symbolic Automata, no. MSR-TR-2013-48, April 2013
- Sebastian Burckhardt, Alexey Gotsman, and Hongseok Yang, Understanding Eventual Consistency, no. MSR-TR-2013-39, March 2013
- Shuvendu K. Lahiri, Kenneth L. McMillan, Rahul Sharma, and Chris Hawblitzel, Differential Assertion Checking, no. MSR-TR-2013-34, March 2013
- Sunghun Kim, Thomas Zimmermann, Rahul Premraj, Nicolas Bettenburg, and Shivkumar Shivaji, Predicting Method Crashes with Bytecode Operations, in Proceedings of the 6th Annual India Software Engineering Conference (ISEC 2013), ACM, February 2013
- Kenneth McMillan and Andrey Rybalchenko, Computing Relational Fixed Points using Interpolation, no. MSR-TR-2013-6, 17 January 2013
- Cedric Fournet, Nikhil Swamy, Juan Chen, Pierre-Evariste Dagand, Pierre-Yves Strub, and Benjamin Livshits, Fully Abstract Compilation to JavaScript, in ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL) 2013, ACM, January 2013
- Loris D'Antoni and Margus Veanes, Static Analysis of String Encoders and Decoders, in VMCAI 2013, Springer Verlag, 2013
- Loris D'Antoni and Margus Veanes, Equivalence of Extended Symbolic Finite Transducers, no. MSR-TR-2013-4, January 2013
- Patrick Cousot, Radhia Cousot, Manuel Fahndrich, and Francesco Logozzo, Automatic Inference of Necessary Preconditions, in in Proceedings of the 14th Conference on Verification, Model Checking and Abstract Interpretation (VMCAI'13), Springer Verlag, January 2013
2012
- Mehdi Bouaziz, Francesco Logozzo, and Manuel Fahndrich, Inference of Necessary Field Conditions with Abstract Interpretation , in 10th Asian Symposium on Programming Languages and Systems (APLAS 2012), Springer, December 2012
- Benjamin Livshits, Dynamic Taint Tracking in Managed Runtimes, no. MSR-TR-2012-114, 19 November 2012
- Magnus Madsen, Benjamin Livshits, and Michael Fanning, Practical Static Analysis of JavaScript Applications in the Presence of Frameworks and Libraries, no. MSR-TR-2012-66, 8 November 2012
- Christian Bird and Thomas Zimmermann, Assessing the Value of Branches with What-if Analysis, in Proceedings of the 20th International Symposium on Foundations of Software Engineering (FSE 2012), Association for Computing Machinery, Inc., November 2012
Links

Try a Coding Duel at www.pexforfun.com
- Peter Heldens - Creating Scripts with TouchDevelop
- TouchDevelop - Getting Started
- Guido de Caso - Distributed Knowledge Authorization Language
- ICSE 2011: Conversation with Baris Aktemur
- ICSE 2011: Danny Dig - Retrofitting Parallelism into a Sequential World
- ICSE 2011: Dieter Rombach - Software Engineering Process Methodology
- ICSE 2011: Grigore Rosu - The Art and Science of Program Verification

