Summer Term 2024
Automatentheorie (Proseminar)
This proseminar gives a first introduction to scientific working in the discipline of computer science. The emphasis in this proseminar is on the presentations both in the role of a speaker as well as a participant. Participating students will elaborate presentations on fundamental concepts of automata theory.
Softwaretechnik / Software Engineering (Lecture)
Software engineering is "the application of engineering to software" (IEEE 610.12). Goal of this course is to provide a broad overview over the challenges of software engineering and techniques and tools to overcome them. To this end, we will discuss the main activities with software development (in particular project management, requirements engineering, design, testing, formal verification) with an emphasis on formal methods. We will study process models, (software metrics), approaches to requirements specification and analysis, (formal) modeling and analysis techniques, design and architecture patterns, testing, and program verification.
Program Verification (Lecture)
Often computers are used in embedded, networked, safety critical applications. The cost of failure is high. In this lecture we introduce the basis of automatic tools for ensuring that a system does not have bad behaviours. In the lecture, we start with a short introduction to propositional logic and first-order reasoning. We then go on to establish a setting for the verification of programs, whose correctness is specified by a kind of program comments. In this setting, the correctness of the program is reduced to the validity of logical formulas. The validity is proven automatically by a new generation of powerful reasoning engines.