# Teaching

## Courses

Number | Type | Title | Hours | Credits | Semester |
---|---|---|---|---|---|

184.695 | PR | Bachelorarbeit für Informatik und Wirtschaftsinformatik | 5.0 | 7.5 | 2018W |

181.224 | SE | Dissertantenseminar | 2.0 | 3.0 | 2018W |

185.291 | VU | Formale Methoden der Informatik | 4.0 | 6.0 | 2018W |

185.A93 | UE | Formale Methoden der Informatik | 2.0 | 3.0 | 2018W |

184.766 | VO | Introduction to Logical Methods in Computer Science | 2.0 | 3.0 | 2018W |

184.703 | VU | Programmanalyse | 2.0 | 3.0 | 2018W |

181.222 | PR | Project in Computational Logic | 8.0 | 12.0 | 2018W |

184.692 | PR | Project in Computer Science 1 | 4.0 | 6.0 | 2018W |

184.693 | PR | Project in Computer Science 2 | 4.0 | 6.0 | 2018W |

184.697 | PR | Projekt aus Software Engineering & Internet Computing | 6.0 | 9.0 | 2018W |

184.767 | SE | Research Seminar LogiCS | 2.0 | 3.0 | 2018W |

181.221 | SE | Seminar Formale Methoden | 2.0 | 3.0 | 2018W |

## Thesis Topics

### Bachelor’s Thesis Topics

**Automatic Bound Computation**

The undecidability of the Halting problem is a famous result that goes back to the beginnings of computer science. The result says that there is no general method for automatically proving the termination of programs. Note, that this statement does not contradict the fact that in practice it is very well possible to prove termination for important program classes automatically. For example, it was a huge success when the first automatic tool chain was able to automatically prove the termination of Windows Device Drivers. Because drivers run in kernel mode, non-terminating drivers could cause the whole system to hang. Despite this success, termination is not a satisfying answer to most programmers who not only want to know that their programs terminate but also when! In ongoing research we are developing tools and algorithms for automatically deriving complexity bounds. See the topics…

### Master’s Thesis Topics

**Model Checking Distributed Algorithms**

Distributed algorithms are designed to be run on several computing nodes, be it on a multiprocessor machine, in a local network, or in a cluster distributed over the globe. Though these algorithms usually have a considerably small description of the code run on an individual node, given the huge number of nodes they can solve complex problems. On the other hand, the distributed nature of the computation poses problems such as different relative processing speeds, delays in message deliveries, faults of nodes and links, etc. To deal with these problems, many sophisticated algorithms have been developed for decades. Each distributed algorithm comes with a mathematical proof of its properties, although the proofs tend to capture the most important behavior, they still could contain non-trivial errors. The formal methods, e.g. theorem proving, model checking, static analysis, are targeted to either find errors or to provide one with a mathematically sound justification that a system under verification behaves with respect to a desired specification. We are developing techniques and tools for checking distributed algorithms in a semi-automatic way, guided by a researcher in that field. See the topics…**Automatic Bound Computation**

The undecidability of the Halting problem is a famous result that goes back to the beginnings of computer science. The result says that there is no general method for automatically proving the termination of programs. Note, that this statement does not contradict the fact that in practice it is very well possible to prove termination for important program classes automatically. For example, it was a huge success when the first automatic tool chain was able to automatically prove the termination of Windows Device Drivers. Because drivers run in kernel mode, non-terminating drivers could cause the whole system to hang. Despite this success, termination is not a satisfying answer to most programmers who not only want to know that their programs terminate but also when! In ongoing research we are developing tools and algorithms for automatically deriving complexity bounds. See the topics…**Machine Learning and Static Analysis for Building Software Verification Portfolios**Are you interested in

*Machine Learning*and*Formal Methods*?

We are looking for students to work on Verifolio, our machine learning-based portfolio software verifier. Verifolio uses static analysis and machine learning to automatically pick a suitable verification tool for a given verification task.

Currently, Verifolio is trained and evaluated on data from the Intl. Competition on Software Verification (SV-COMP) using Support Vector Machines (SVM). It outperforms any standalone software verifier in the competition. We are looking for motivated students who will extend the platform in several ways. See the topics…

## Graduate Studies

FORSYTE is involved in lectures and organization of the following programs:

### Master Programs

- Master Program in Computational Intelligence

(English language Master program) - Erasmus Mundus European Master Program in Computational Logic

(English language Master program with EU scholarships in collaboration with Dresden, Bolzano, Lisbon)

### PhD Programs

- Doctoral Program Logical Methods in Computer Science
**– NEW** - Vienna PhD School of Informatics

(yearly applications for 10-20 scholarships) - Doctoral Programme ”Mathematical Logic in Computer Science”
- Doctoral program in Computer Science

(funding usually provided by advisor’s grants; please inquire with potential advisors)