- Overview
- Basic Program Analysis
- Slides
- Need to master the following basic concepts and their differences and relationships
- Data/Control Dependency (together named as Program/System Dependency) vs.
- Information Flow vs.
- Program Slicing vs.
- Symbolic Execution
- Dynamic Symbolic Execution (e.g., Pex, SAGE) vs.
- KLEE Symbolic Execution
- Modular Verification (e.g., Boogie based on which are Spec# for C# (see Tutorial), SMACK+Corral for C) vs.
- Abstract Interpretation (e.g., Code Contracts)
- Readings
- Illinois PL-FM-SE reading lists for qualification exams
- General Software Verification
- Analysis Soundness (Soundness Website)
- Abstract Interpretation
- Online video on "Abstract Interpretation: Introduction"
- Slides and notes from Patrick Cousot's course
- Slides on "Static Program Analysis using Abstract Interpretation"
- Notes on Abstract Interpretation
- Automated Deduction
- Clark Barrett and Cesare Tinelli. Satisfiability Modulo Theories. Chapter on Satisfiability Modulo Theories. In E. Clarke and T. Henzinger and H. Veith editors, Handbook on Model Checking. Springer, 2014.
- Nikolaj Bjørner and Leonardo de Moura. Applications of SMT solvers to Program Verification. Rough notes for SSFT 2014 Prepared as part of a forthcoming revision of Daniel Kroening and Ofer Strichman’s book on Decision Procedures. 2014.
- Willem Visser, Nikolaj Bjørner, and Natarajan Shankar. Software engineering and automated deduction. In FOSE 2014.
- Clark Barrett, Daniel Kroening and Tom Melham. Problem Solving for the 21st Century: Efficient Solvers for Satisfiability Modulo Theories. Tech Report 2014.
- Leonardo de Moura and Nikolaj Bjorner. Satisfiability Modulo Theories: Introduction and Applications. Communications of the ACM, vol. 54, no. 9, 2011.
- Natarajan Shankar. Automated Deduction for Verification. ACM Comput. Surv. 2009.
- Clark Barrett, Roberto Sebastiani, Sanjit A. Seshia, and Cesare Tinelli. Satisfiability Modulo Theories. Handbook of Satisfiability, Chapter 12, 2008.
- Boogie-Style Software Verification
- Software Model Checking
- David Brumley. Software Model Checking Overview (Slides). 2012.
- Ranjit Jhala and Rupak Majumdar. Software model checking. ACM Comput. Surv. 2009. [ACM Lib]
- Elisabeth A. Strunk, M. Anthony Aiello, John C. Knight, Eds. A Survey of Tools for Model Checking and Model-Based Development. 2006.
- E. Allen Emerson. The Beginning of Model Checking: A Personal Perspective. 25 Years of Model Checking, Orna Grumberg and Helmut Veith (Eds.). Lecture Notes In Computer Science, Vol. 5000. Springer-Verlag, Berlin, Heidelberg 27-45, 2008.
- Edmund M. Clarke and Bernd-Holger Schlingloff. Model checking. Handbook of automated reasoning, Alan Robinson and Andrei Voronkov (Eds.). Elsevier Science Publishers B. V., Amsterdam, The Netherlands, The Netherlands 1635-1790, 2001.
- Symbolic Execution
- UMD Symbolic Execution Tutorial (based on KLEE)
- Giovanni Denaro. A Comparison Between Symbolic Execution-Based Verification and Model Checking. Tech Report. 2002.
- Formalization of symbolic execution
- Edward J. Schwartz, Thanassis Avgerinos and David Brumley. All You Ever Wanted to Know About Dynamic Taint Analysis and Forward Symbolic Execution (but Might Have Been Afraid to Ask). In Proceedings of the 2010 IEEE Symposium on Security and Privacy (Oakland'10), May 2010. [PDF][Slides]
- Yit Phang Khoo, Bor-Yuh Evan Chang, and Jeffrey S. Foster. 2010. Mixing type checking and symbolic execution. SIGPLAN Not. 45, 6 (June 2010), 436-447. [PDF]
- Dissertation:
- Pointer Analysis
- Yannis Smaragdakis and George Balatsouras. Pointer Analysis. Tutorial Notes. Foundations and Trends in Programming Languages. 2015.
- Information Flow Analysis
- Program Slicing
- Software Testing
- Other testing surveys and testing dissertations
- MSR Open Source Boogie (project web)
- MSR Pex Project
Operational semantics