Program Analysis and Code Verification (NSWI132)

Administrative Information

News

Slides

Annotation

Syllabus

Lab

Homework assignments

Grading

References

Administrative Information

Program analysis
Time and Location: Winter Semester 2011/2012
Lectures: Wed 15:40 S1
Lab: Wed 17:20 SU1
Guaranteed by: Department of Distributed and Dependable Systems
Winter Term: 2/2 Zk+Z
Lecturers: Jan Kofroň
e-mail: jan.kofron<at-sign>d3s.mff.cuni.cz
Lab: Pavel Jančík
e-mail: pavel.jancik<at-sign>d3s.mff.cuni.cz
Information in SIS: NSWI132

News

  • There WILL BE a lecture on January, 11.
  • The first homework assignment can be found at homework1.pdf. The new deadline for the first homework is Nov 23th 2011, 15:30.
  • First (introductory) lesson will take place on 2011-10-05 15:40, room S1
  • First labs will take place on 2011-10-12 17:20, room SU1

Slides

Lectures

DateTopicSlides
05.10.2011 Introductory lecture (motivation, organization) lecture00.pdf
12.10.2011 Model checking of programs lecture01.pdf
19.10.2011 State space explosion, environment construction lecture02.pdf
26.10.2011 Counter-example Guided Abstraction Refinement lecture03.pdf
02.11.2011 Lazy abstraction lecture04.pdf
09.11.2011 SAT Solvers lecture05.pdf
16.11.2011 Deductive methods: SMT solvers, Theorem provers lecture06.pdf
23.11.2011 Verification of program code against contracts: Spec# & Boogie lecture07.pdf
30.11.2011 Static Analysis – Theoretical Background lecture08.pdf
07.12.2011 Data-Flow Analysis lecture09.pdf
21.12.2011 Static analysis of programs with heap and procedures lecture10.pdf
04.01.2012 Current Trends lecture11.pdf
11.01.2012 O. Šerý: Bounded Model Checking and Concolic Testing

Labs

DateTopicSlides
12.10.2011 Model checking of programs seminar01.pdf
19.10.2011 Java PathFinder I seminar02.pdf
26.10.2011 Counter-example guided abstraction refinement I seminar03.pdf
2.11.2011 Counter-example guided abstraction refinement II seminar04.pdf
9.11.2011 Deductive methods: SAT solvers seminar05.pdf
16.11.2011 Deductive methods: SMT solvers and theorem proving seminar06.pdf
23.11.2011 Spec#, BoogiePL and verification conditions seminar07.pdf
30.11.2011 Code Contracts seminar08.pdf
7.12.2011 Data-flow analysis, Pointer analysis seminar09.pdf
21.12.2011 Soot framework I seminar10.pdf
4.1.2012 Soot framework II seminar11.pdf
11.1.2012 CBMC seminar12.pdf

Annotation

Basic principles of automated program analysis and verification. Model checking, theorem proving, and static analysis.

Syllabus

  • Model checking of programs
    • Explicit-state model checking (JPF, Zing)
    • Predicate abstraction and CEGAR (SLAM, SATABS, Blast)
  • Introduction to deductive methods in software verification and program analysis
    • SAT solvers (PicoSAT)
    • SMT solvers (Yices, Z3, CVC3)
    • Theorem provers (Prover9, Isabelle)
  • Selected applications of deductive methods in software verification
    • JML, Spec#, ...
  • Static code analysis
    • Theoretical background: lattices, fixed points, control-flow graphs, ...
    • Basic data-flow analysis
    • Pointer analysis: points-to analysis, escape analysis, shape analysis, ...
    • Control-flow analysis
  • Current trends in formal analysis and verification of programs (research and applications)

Lab

The purpose of the lab is to provide students with a hand-on experience with selected verification and analysis tools ( Java PathFinder, Blast, JML, Spec#, Soot, ...).

Homework assignments

There will be three assignments, each taking approximately 10-15 hours of homework. Solutions for all three of them have to be submitted 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.

DeadlineTopicSlides
23.11.2011 15:30 Java PathFinder homework1.pdf
19.2.2011 23:59 Code Contracts homework2.pdf
19.2.2011 23:59 Soot framework homework3.pdf

Grading

Final grades will be determined by the quality of homework and the result of the final exam in the following ratio:

  • 50% Homework assignments (1-10 points for each of them)
  • 50% Final exam (1-30 points)

Grades will be based on points in the following way:

Grade Required points
Excellent:49-60 points
Very good:40-48 points
Good: 31-39 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
Modified on 2012-01-11