Formal Methods and Specifications
Code | Completion | Credits | Range | Language |
---|---|---|---|---|
NIE-FME | Z,ZK | 5 | 2P+1C | English |
- Garant předmětu:
- Lecturer:
- Tutor:
- Supervisor:
- Department of Software Engineering
- Synopsis:
-
Students are able to describe semantics of software formally and to use sound reasoning for construction of correct software. They learn to use some software tools that allow to prove basic properties of software.
- Requirements:
-
Knowledge of basic notions of mathematical logic and set theory and ability to use them.
- Syllabus of lectures:
-
1. Introduction to formal program specification
2. Proof methods
3. Logical theories and modeling of data structures
4. Operational program semantics
5. Unbounded software model checking
6. (2) Unbounded software model checking
7. Functions, procedures
8. Termination proofs
9. Symbolic execution
10. Decision procedures
11. Object oriented programming
12. Program synthesis
- Syllabus of tutorials:
-
Practical training of the lecture material.
- Study Objective:
-
The goal of the module is to provide students with the ability to apply formal reasoning in software development. On one hand, this includes the ability to base their own software development activities on sound reasoning, even within an environment that does not systematically employ formal methods. On the other hand, this includes the ability to understand and use automated techniques and tools for supporting formal methods within the software development process.
- Study materials:
-
1. Clarke, E.M. - Henzinger, Th.A. - Veith, H. - Bloem, R. (Eds.) : Handbook of Model Checking. Springer,
2018. ISBN 978-3-319-10574-1.
2. Kroening, D. - Strichman, O. : Decision Procedures - An Algorithmic Point of View, 2nd edition. Springer,
2016. ISBN 978-3-662-50496-3.
3. Bradley, A. R. - Manna, Z. : The Calculus of Computation. Springer, 2007. ISBN 978-3-540-74113-8.
- Note:
- Further information:
- https://courses.fit.cvut.cz/NI-FME/
- No time-table has been prepared for this course
- The course is a part of the following study plans:
-
- Master specialization Software Engineering, in English, 2021 (PS)
- Master specialization Computer Security, in English, 2021 (elective course)
- Master specialization Computer Systems and Networks, in English, 2021 (elective course)
- Master specialization Design and Programming of Embedded Systems, in English, 2021 (elective course)
- Master specialization Computer Science, in English, 2021 (VO)
- Master specialization Computer Science, in English, 2024 (VO)