Track E: Software Engineering and Formal Techniques

How to design systems that work? The Formal Methods and Tools (FMT) and Software Engineering (SE) groups have an outstanding international track record in developing novel techniques, languages, tools, and theories that help developers making high quality software and software designs; in particular correct, robust, well-structured, and easy to evolve or adapt. In this track, you will contribute to this research via a BSc research project.
Your project will typically involve:
• development of new concepts or theory, eg new algorithms, data structures, language constructs, theorems, etc and/or.
• programming, contribution to the development of one of the many tools in the FMT ande SE groups and/or
• case studies, trying out a new tool or theory on one or more practical examples. 
Suggested Topics
Typical topics include, but are not limited to:
Model checking checks if a program model meets its desired properties, e.g. if an error or illegal state is never reached; or that each request is serviced. Model checking algorithms are typically based on smart graph-search algorithms. We consider a wide variety of flavors, e.g.: multi-core model checking, software model checking and stochastic model checking.
Graph transformations analyze data structures by transforming one graph into another one. In this way, you obtain graphs whose nodes are graphs themselves. 
Model-based Testing concerns techniques for automatic test generation, execution and evaluation. 
Software composition techniques relates to support in methods, notations and languages for composing large systems from smaller parts. Advanced examples include aspect-orientation, composition filters, and 'free composition'.
Service-oriented architectures aim at composing systems from individual services, 
Traceability is the ability to trace requirements to the design and implementation of software
Model-driven engineering (MDE) focuses on creating and exploiting domain models (i.e. abstract representations of knowledge from a particular application domain), and using those to create (often -partially- generate) implementations.
Language engineering is the process of desiging and implementing programming languages, either general purpose, or domain-specific (DSLs) 
Concrete project descriptions can be found at (FMT)
Depending on the topic you choose, you will use techniques that you learned in courses like Basismodellen (BaMi), Formal Methods in Software Engineering (FMSE), , Algorithms, Datastructures, and Complexity (ADC), Software Engineering Models (SEM), and XML Technologies (XTEC).
For further information on the content of this track, you may contact the track chair prof van de Pol, For any information on the conference organisation, please contact the conference chair on