Software is getting more and more complex and is gradually assuming responsibility for critical tasks. Therefore, any technology aimed at ensuring software reliability and quality will be increasingly important.
There are many ways to approach these goals. The declarative approach relies on languages and logics with a solid mathematical foundation. This includes specification languages (VDM, Z, B, Event-B, OBJ, Alloy...), functional programming languages (Haskell, Erlang, λ-calculi...), and logic programming languages (Prolog, CLP, ASP...).
Depending of the number of students, the final grade will be obtained either from:
Exercises for each unit will have the same relative weight for the overall grade, although individual exercises in a given unit can have different weights.
|SSC1||Examination of the state of the art to identify research problems related to the design, construction, use and evaluation of complex software-intensive sociotechnical systems||S|
|SSC5||Contribution of solutions to open problems related to software verification and validation applications and methods, techniques and tools||A|
|Code||Learning Outcome||Associated competences||Proficiency level|
|RA-AV-1||Familiarity with the idea of design and implementation requirement||SSC1,SSC5||C|
|RA-AV-2||Familiarity with different formal development techniques||SSC1,SSC5||K|
|RA-AV-3||Knowledge of several languages for applying formal development techniques||SSC1,SSC5||A|
|RA-AV-4||Knowledge of techniques for proving code correctness||SSC1,SSC5||A|
|RA-AV-5||Effective use of rigorous software construction techniques||SSC1,SSC5||C|
Subject learning guide for Rigorous Software Development