Formal methods of software engineering
Course: Software engineering
Structural unit: Faculty of Computer Science and Cybernetics
Title
Formal methods of software engineering
Code
ВК.1.01
Module type
Вибіркова дисципліна для ОП
Educational cycle
Second
Year of study when the component is delivered
2022/2023
Semester/trimester when the component is delivered
3 Semester
Number of ECTS credits allocated
3
Learning outcomes
LO03. Build and research models of information processes in the applied field.
LO10. Modify existing and develop new algorithmic solutions for detailed software design.
Form of study
Prerequisites and co-requisites
1. To know certain sections of discrete mathematics, first of all, mathematical logic, theory of algorithms, theory of abstract automata, theory of Boolean functions, theory of graphs, theory of algebraic systems and others.
2. Know the basic concepts of programming and the principles of program development.
Course content
The goal of the discipline is to learn and analyze the basic mathematical methods of writing specifications, developing and verifying software and computer equipment (at all stages of their life cycle).
As a result of studying the academic discipline, the master's student should know:
the role of formal methods in the life cycle of programs; tabular means of specification of programs; equalities, substitutions and the problem of defining semantics; denotational, operational and axiomatic semantics, their connection with substitutions; logical means and axiomatic descriptions; graphic means of specification: graphs, networks, diagrams; operations, expressions, procedural means and their combination; means of modularization, typification, structuring and their implementation; means of naming (in particular, variable names and concepts, contexts and scopes of names); methodological principles and pragmatic recommendations for the application of formal methods of software engineering.
As a result of studying the academic discipline, the master's student should be able to:
apply the acquired knowledge in the development of software systems (for which reliability or security are important) in order to protect them from errors both at the early stages of writing requirements and specifications, and for fully formal development of program implementation.
Recommended or required reading and other learning resources/tools
1. Hoare, C.A.R. Communicating Sequential Processes. London: Prentice-Hall International. – 1985.
2. Milner R.G. A Theory of Type Polymorphism in Programming. Journal of Computer and System Science, 1978, 17, p. 348-357.
3. Joseph Goguen and Grant Malcolm, Algebraic Semantics of Imperative Programs. – MIT Press, 1996.
4. Björner, Dines; Henson, Martin C. (Eds.) Logics of Specification Languages, Series: Monographs in Theoretical Computer Science. An EATCS Series 2008, XXII, 624 p. 69 illus., Hardcover.
5. RAISE Method Group. The RAISE Development Method. BCS Practitioner Series. Prentice Hall. 1995. – 493 p.
6. Rod M. Burstall , Joseph A. Goguen, The Semantics of CLEAR, A Specification Language, Proceedings of the Abstract Software Specifications, 1979, Copenhagen Winter School, p. 292-332, January 22-February 02.
7. Guttag J.V., Horning J.J. Larch: Languages and Tools for Formal Specification. – Springer-Verlag, Texts and monographs in Computer Science, 1993. – 259 p.
Planned learning activities and teaching methods
Lectures, independent work, tests, homework, test.
Assessment methods and criteria
Intermediate assessment:
1. Control work 1: SC01, SC04, SC05 - 50 points / 9 points.
2. Control work 2: SC01, SC04, SC05 - 50 points / 10 points.
Final evaluation (in the form of differentiated credit):
1. The maximum number of points that can be received by a student for credit on a 100-point scale: 100 points;
2. The minimum threshold level of a positive assessment, at which a student is admitted to credit (on a 100-point scale): 20 points.
3. Learning outcomes that are assessed on credit: SC01, SC04, SC05.
Language of instruction
ukrainian
Lecturers
This discipline is taught by the following teachers
Anatolii
M.
Petrushenko
Department of Intelligent Software Systems
Faculty of Computer Science and Cybernetics
Faculty of Computer Science and Cybernetics
Departments
The following departments are involved in teaching the above discipline
Department of Intelligent Software Systems
Faculty of Computer Science and Cybernetics