Program Analysis and Code Verification

Time and Location: Summer Term 2018/2019
Lecture: Thu 10:40 in S10
Lab: Thu 12:20 in S10
Guaranteed by: Department of Distributed and Dependable Systems
Summer Term: 2/2 Zk+Z
Lecturers: Pavel Parízek
e-mail: parizek<at-sign>d3s.mff.cuni.cz
Labs: Pavel Parízek
e-mail: parizek<at-sign>d3s.mff.cuni.cz
Information in SIS: NSWI132

News

  • The third homework assignment is available here. The deadline for submitting your complete solutions is on May 24th, 2019 at 23:59.
  • The fourth homework assignment is available here. The deadline for submitting your complete solutions is on June 30th, 2019 at 23:59.
  • The fifth homework assignment is available here.

Slides

Lectures

DateTopicSlides
21.2.2019Introductory lecturelecture00.pdf
28.2.2019Model Checking Programslecture01.pdf
7.3.2019Concurrency Errorslecture02.pdf
14.3.2019Symbolic Execution, Dynamic Analysislecture03.pdf
21.3.2019Deductive Methods, Bounded Model Checkinglecture04.pdf
28.3.2019Abstractionlecture05.pdf
4.4.2019Contracts: Specification and Verificationlecture06.pdf
18.4.2019Static Analysis: Overview, Data-Flowlecture07.pdf
25.4.2019Static Analysis: Pointers and Heap Structureslecture08.pdf
2.5.2019Abstract Interpretationlecture09.pdf
9.5.2019Combining Verification Approacheslecture10.pdf
16.5.2019Program Terminationlecture11.pdf
23.5.2019Program Synthesislecture12.pdf

Labs

DateTopicSlidesExamples
28.2.2019Java PathFinderlab01.pdf
7.3.2019Detecting Concurrency Errors with JPFlab02.pdfconcur_bench.zip
14.3.2019Symbolic PathFinder, RoadRunnerlab03.pdf
21.3.2019SMT Solvers, CBMClab04.pdfsmt-examples.zip | bmc-examples.zip
28.3.2019CEGARlab05.pdfcegar.tgz
4.4.2019Code Contracts, Viperlab06.pdfcontracts-examples.zip
18.4.2019T.J. Watson Libraries for Analysislab07.pdfwala-examples.zip
25.4.2019Static Analysis Toolslab08.pdfpredator-examples.tgz
2.5.2019Realistic Verification Scenarioslab09.pdf

Annotation

Basic principles of automated analysis and verification of programs (model checking, static analysis, dynamic analysis, and deductive methods) and their practical applications (e.g., detecting concurrency errors).

Syllabus

  • Model checking of programs
  • Detecting concurrency errors
  • Symbolic execution
  • Dynamic analysis
  • Introduction to deductive methods
    • SAT solvers, SMT solvers
  • Bounded model checking
  • Predicate abstraction and CEGAR
  • Selected applications of deductive methods in software verification
    • Verification of program code against contracts
  • Static analysis and its usage in program verification
  • Abstract interpretation
  • Combination of verification techniques
  • Program termination
  • Program synthesis

Organization

During the lectures we will describe individual program verification and analysis methods, including basic concepts, main algorithms, and their limitations.

The purpose of the lab is to provide students with a hand-on experience with selected verification and analysis tools ( Java Pathfinder, CBMC, Code Contracts, WALA, ...).

Homework assignments

There will be five assignments, each taking approximately 10-15 hours of homework. You need to do the assignment no. 5 (presentation of some research publication) and two others to get credit ("zápočet").
Note: 10% of your score will be deducted for every calendar day your solution of the assignment is late. This implies that no solutions will be accepted after 10 calendar days past its due date.

DeadlineTopicSlidesExamples
4.4.2019 23:59Java Pathfinderhw1-jpf.pdfdaisyfs.zip | elevator.zip | repworkers.zip
2.5.2019 23:59Code Contractshw2-contracts.pdf
24.5.2019 23:59Static Analysishw3-static.pdf
30.6.2019 23:59Finding Bugs in Real Softwarehw4-realsw.pdf
23.5.2019Research Papershw5-papers.pdf

Grading

Final grades will depend on the quality of your homework and on the result of the voluntary final exam as follows:

  • Homework assignments (0-20 points for each of them)
  • Final exam (0-25 points)

Grades will be based on points in the following way:

Grade Required points
Excellent:85-125 points
Very good:72-84 points
Good: 60-71 points

References

  • E. M. Clarke, O. Grumberg, and D. A. Peled. Model Checking, MIT Press, 2000
  • F. Nielson, H. R. Nielson, and Chris Hankin. Principles of Program Analysis, Springer, 2005
  • D. Kroening and O. Strichman. Decision Procedures: An Algorithmic Point of View, Springer, 2008

Archive

Academic year 2015/2016:lectureslabstools & examples
Logo of Faculty of Mathematics and Physics
  • Phone: +420 951 554 267, +420 951 554 236
  • Email: info<at-sign>d3s.mff.cuni.cz
  •  
  • How to find us?
Modified on 2019-03-14