User Tools

Site Tools


courses:ssv2020:main

Software Specification and Verification, Fall 2020

This is an introductory course on formal software specification and verification, covering various formalisms, methods, and tools for specifying the properties of a software program and for verifying that the program meets its specification. Its goal is to acquaint the students with fundamentals of formal software verification and to prepare them for conducting research in the area. We will focus on deductive (theorem proving) methods. A separate, complementary course entitled “Automatic Verification” covers algorithmic (model checking) methods.

Announcements

  • 01/24: grade report available; please send inquiries, if any, to the instructor by 2PM 01/25 (Mon).
  • 01/06: solutions to homework assignments final update: HW#5.
  • 01/05: old exams.
  • 01/03: solutions to HW#4 updated.
  • 01/02: solutions to HW#1 updated.
  • 12/30: solutions to homework assignments: HW#1, HW#2, HW#3, HW#4, HW#6
  • 12/23: slides for Compositional Reasoning available.
  • 12/23: HW#7 for exercise (no credit).
  • 12/09: HW#6 due on 12/17 at 5PM.
  • 12/09: slides for the Temporal Verification available.
  • 12/02: slides for the Owicki-Gries Method and for UNITY available.
  • 11/25: HW#5 due on 12/02.
  • 11/25: All examples in the lecture on Why3 available.
  • 11/25: slides for Frama-C and Why3 available.
  • 11/11: slides for Hoare Logic (II): Procedures available.
  • 11/11: slides for Soundness and Completeness of Hoare Logic revised.
  • 11/04: slides for Predicate Transformers available.
  • 10/28: HW#4 due on 11/04.
  • 10/28: slides for Soundness and Completeness of Hoare Logic available.
  • 10/14: slides for Hoare Logic (I) and two notes available.
  • 10/14: HW#3 due on 10/21.
  • 10/14: slides for Logical Proofs in Coq revised.
  • 10/07: slides and a note for Logical Proofs in Coq available.
  • 09/30: HW#2 due on 10/07.
  • 09/23: HW#1 due on 09/30.
  • 09/16: HW#0 due on 09/23.
  • 09/16: slides for Course Introduction, Propositional Logic, and First-Order Logic and a note on Natural Deduction available.
  • 09/14: this website created on 09/11. It is the main source of all up to date course information and syllabus; there will be no separate PDF version.

Instructor

Yih-Kuen Tsay (蔡益坤), NTU IM Dept., 3366-1189, Xtsay@im.ntu.edu.twX (between the enclosing pair of X's)

Lectures

Wednesday 2:20-5:20PM, Room 203, Management Building 2

Office Hours

Tuesday 1:30~2:00PM, Wednesday 1:30~2:00PM, or by appointment, Room 1108, Management Building 2.

Prerequisites

Computer Programming and Discrete Mathematics

Textbook

Class Notes and Selected Readings

We shall seek to strike a balance between depth and breadth, covering both the foundations and some of the more successful formalisms, techniques, and tools. Below is a tentative list of topics and their schedule:

Grading

Homework Assignments 20%, Participation 10%, Final Exam 40%, Term Paper/Report 30%.

References

  1. Logic for Computer Science: Foundations of Automatic Theorem Proving, J.H. Gallier, Harper & Row Publishers, 1985. (Note: click on the link to author's free download site.)
  2. Proof Theory and Automated Deduction, J. Goubault-Larrecq and I. Mackie, Kluwer Academic Publishers, 1997.
  3. Logic in Computer Science: Modelling and Reasoning about Systems, M. Huth and M. Ryan, Cambridge University Press, 2004.
  4. Foundations for Programming Languages, J.C. Mitchell, The MIT Press, 1996.
  5. Formal Syntax and Semantics of Programming Languages, K. Slonneger and B.L. Kurtz, Addison-Wesley, 1995.
  6. Verification of Sequential and Concurrent Programs, 2nd Edition, K.R. Apt and E.-R. Olderog, Springer-Verlag, 1997.
  7. The Science of Programming, D. Gries, Springer-Verlag, 1981.
  8. Predicate Calculus and Program Semantics, E.W. Dijkstra and C.S. Scholten, Springer-Verlag, 1990.
  9. Programming from Specifications, 2nd Edition, C. Morgan, 1994.
  10. Software Foundations, B.C. Pierce, C. Casinghino, M. Greenberg, V. Sjöberg, and B. Yorgey. (Note: click on the link to authors' free download site.)
  11. Certified Programming with Dependent Types , A. Chilipala. (Note: click on the link to author's free download site.)
  12. The Z Notation: A Reference Manual, 2nd Edition, J.M. Spivey, 1992. (Note: click on the link to author's free download site.)
  13. Software Engineering with B, J.B. Wordsworth, Addison-Wesley, 1996.
  14. Modeling in Event-B: System and Software Engineering, J.-R. Abrial, Cambridge University Press, 2010.
  15. The Temporal Logic of Reactive and Concurrent Systems: Specification, Z. Manna and A. Pnueli, Springer-Verlag, 1992.
  16. Temporal Verification of Reactive Systems: Safety, Z. Manna and A. Pnueli, Springer, 1995.
  17. Temporal Verification of Reactive Systems: Progress, Z. Manna and A. Pnueli, Book Draft, 1996. (Note: click on the link to authors' free download site.)
  18. Specifying Systems: The TLA+ Language and Tools for Hardware and Software Engineers, L. Lamport, Addison-Wesley, 2003.
  19. Parallel Program Design: A Foundation, K.M. Chandy and J. Misra, Addison-Wesley, 1988.
  20. A Discipline of Multiprogramming: Programming Theory for Distributed Applications, J. Misra, Springer, 2001
  21. Beauty Is Our Business: A Birthday Salute to Edsger W. Dijkstra, Edited by W.H.J. Feijen, A.J.M. van Gasteren, D. Gries, and J. Misra, Springer-Verlag, 1990
  22. The Formal Methods Page: http://formalmethods.wikia.com/wiki/Formal_methods, J. Bowen. (Note: this Web portal provides links to numerous formal methods and tools.)
courses/ssv2020/main.txt · Last modified: 2021/11/09 09:38 by tsay2