After successfully completing this course, the student:
- is able to research, understand, and apply recent scientific results in software science
- is able to answer software-related research questions on an appropriate level of abstraction
The student acquires:
- knowledge and understanding of the basic concepts of graph transformation
- insight in the use of graph transformation for modelling and verification in general
- skill in applying graph transformation for the construction and manipulation of syntax graphs and heap graphs
Software is everywhere, and our society is depending more and more on software working reliably and efficiently. To make it more reliable and efficient, we need to have a thorough understanding of the behavior of software systems, and how we can analyse and improve this behavior. This course gives insights in current research directions in the area of software systems, and how these new ideas can be used to improve software.
The goal of the course Software Science is to teach several topics related to active, on-going research in software engineering and formal methods. Each edition of the course consists of one topic of recent research, presented in lectures complemented with exercise or lab sessions to gain practical experiences with the material introduced during the lectures. Each topic comes with one or more individual homework/project assignments.
If one is interested in more than one topic, it is possible to follow the course a second time choosing a different topic. In this way, one can study 2 topics for 10 ECTS.
Graph transformation is a very widely applicable modelling paradigm, which here is used to capture the syntax and semantics of programming languages. This involves recognising that both the syntactic structure of a program itself and its effect in terms of what happens during execution can be represented by graphs. Graph transformation rules can then be defined to manipulate these graphs in a deterministic fashion reflecting what happens during parsing and execution of a program.
In this part of the course, we explain the basic concepts of graph transformation and how they can be applied in the way described above. This is supported by a tool called GROOVE (which stands for “GRaphs for Object-Oriented VErification”) in which you can try out everything you have learned and develop rule systems yourself.