Based on formal specifications (logical specifications, statecharts, Petri nets) the student should be able to build models expressing the intended functionality of a system, to analyse and to verify these models, and to generate a working implementation from them.
As such, studens will obtain the core competences of a bachelor in computer science. They learn to specify precisely (using formal models such as logical predicates, state-charts, petri-nets, ...) what a software system is supposed to do, which is a prerequisite for analysis and design. They experience how these formal models can be used to generate code, which is a first step towards implementation. Last but not least, they read and report about scientific articles, which contrubutes to their communication skills.