Available courses

This course will cover both the writing process and the writing product. You will learn writing principles that will you help you to create text that is coherent, cohesive, and clear. A primary goal of this course is to teach you how to "escape" your own expertise in order to identify the parts of your text that will cause a reader difficulties. 

The course format will vary from week-to-week, and will include a mix of mini-lectures, exercises, one-on-one feedback, and group discussions of part of a paper (usually written by a course participant but sometimes selected from the literature). In order to get the most out of the class, participants will be expected to do substantial out-of-class writing (about one to two hours per week). The precise content of the course will be tailored to the course participants.

Prerequisites

This course is intended for PhD students and postdocs in Computer Science. For PhD students, I typically prefer that students have already taken my course on how to give scientific presentations. I do make exceptions, but students need to demonstrate that they already have basic competence at communicating scientific ideas verbally.


This course introduces students to the principles, design, and implementation of operating systems. The lectures focus primarily on the principles and design of operating systems; a course project exposes students to the implementation aspects of operating systems and serves to solidify students' understanding of the course material. Please refer to [the website](https://courses.mpi-sws.org/os-ws21) for further details.
Seminar on Machine-Assisted Decision-Making, SS 2021
Distributed Systems Core Course, Saarland University, Summer Semester 2021.

For general class information, see http://courses.mpi-sws.org/ds-ss21

Lecture content and discussion will all be done on Moodle.  To access this, you will need to enrol in the class on Moodle.
This is a working group designed to provide guidance, accountability, and feedback to young researchers who would like to apply for an ERC Grant in 2021.
How do systems like Google and Facebook actually work? What does it take to build a planet-scale system? What can we do today using cloud computing that wasn't possible a decade ago? In this course we will look at the research behind modern cloud and datacenter systems. We will read recent research papers in operating systems, computer networks, and distributed systems. We will look at modern application trends including big data analytics, microservices, serverless architectures, and machine learning. Along the way we will learn how to design, implement, and evaluate robust, effective, and efficient systems. In addition to learning about cutting-edge systems research, students will get their feet wet with a semester-long research project.
Just a seminar

The goal of this seminar is to introduce students to important research results in the area of software reliability, and in particular, program analysis, software engineering, and software security. To achieve this, students will study and present research papers in the area; they will also be expected to participate in paper discussions.

During this seminar, the students will...

  • become familiar with a broad range of research results in the area of software reliability,
  • learn how to read and understand papers in the area,
  • learn how to evaluate papers in the area by highlighting limitations and suggesting possible improvements,
  • learn how to present a technical topic in the area to an audience of peers.

Students become familiar with the area through a study of key papers, reviewing papers, presenting papers to colleagues, and working individually or in groups to solve a research problem.


This course introduces students to the principles, design, and implementation of operating systems. The lectures focus primarily on the principles and design of operating systems; a course project exposes students to the implementation aspects of operating systems and serves to solidify students' understanding of the course material. Please refer to https://courses.mpi-sws.org/os-ws19 for further details. 

Course for organizing the PLV reading group.

We would like to start a series of 'townhall talks' at the institute, which will feature a mix of technical overview, as well as communication, presentation, and other research skills talks. The technical overview talks will be high-level presentations about a group's current research. The research skills talks are meant to complement Rose's communication classes and support, and will be usually followed by a (panel) discussion, i.e. they are meant to be interactive. Everyone is encouraged to participate!

The talks are typically scheduled on the third Wednesday of each month.


This course covers advanced topics of automata theory and its applications (e.g., computer-aided verification), including:

  • learning of automata
  • the connection of automata to second-order logic and Linear Temporal Logic
  • automata on infinite words
  • automata on trees
  • synthesis of reactive systems

Intended Audience: The course is intended for computer science or math students with background in logic and theory of computation (familiarity with basic algorithms, logic, and the theory of computation will be assumed). Talk to the instructor if you are not sure if you have the background. Please attend the initial lecture for background material.

Further, students should (1) have "mathematical maturity" (e.g., you should be comfortable with proofs and abstract reasoning), (2) be interested in the material; and (3) are willing to spend time outside of class in order to better understand the material presented in lectures.


This course provides an introduction to fundamental concepts and algorithmic methods for solving linear and integer linear programs. Linear optimization is a key subject in theoretical computer science. Moreover, it has many applications in practice. A lot of problems can be formulated as (integer) linear optimization problem. For example, combinatorial problems, such as shortest paths, maximum flows, maximum matchings in graphs, among others have a natural formulation as a linear (integer) optimization problem. In this course you will learn: * how to optimize a linear function subject to linear constraints * how to formulate combinatorial problems as (integer) linear optimization problems * how to solve them To this end, basic concepts from polyhedral theory will be introduced. The simplex algorithm and the ellipsoid method will be presented. The lecture concludes with exact and approximation algorithms for NP-hard optimization problems. There will be theoretical and practical exercises.

Advanced course at Universität des Saarlandes

6 credit points
Summer semester 2019

This course introduces two topics together

  • The first part is a self-contained introduction to the proof assistant Isabelle/HOL.
  • The second part is an introduction to the semantics of imperative programming languages. This part is formalized in Isabelle.

This advanced course is based on a book by Prof. Tobias Nipkow and Prof. Gerwin Klein, which is available both as a free PDF online and as a hardcover from Springer. The material is complementary to the core Semantics course by Prof. Gert Smolka, which uses Coq and focuses on the λ-calculus and functional programming.

Proof assistants are tools that allow its users to carry out mathematical proofs rigorously, based on a logical foundation. Developing a proof in a proof asssistant as opposed to using pen and paper is roughly the equivalent of programming on a computer as opposed to sketching pseudocode on paper. Expertise with proof assistants is becoming an increasingly important skill, especially for software verification, which aims at proving the absence of bugs in programs. In the experience of many instructors, the use of a proof assistant helps students get a good grip on computer science topics.

Coq and Isabelle are the main two proof assistants in use. Isabelle's strength is that it is simple as 1-2-3: It offers (1) a simple yet powerful logic, (2) a convenient user interface, and (3) a lot of proof automation.

There are no formal prerequisites for taking the course. Familiarity with a typed functional programming language (such as Standard ML, OCaml, Haskell, or F#), as taught in Programmierung 1, is highly recommended.

*What*: The "theory" portion of the course will cover the basics of scientific presentations, including content and organization, introductions and conclusions, slide design, delivery, and how to prepare for a conference talk. The "practice" portion of the class will give students several chances to practice their presentation skills, get immediate feedback from their peers, and watch themselves on video. *Who*: The course is open to PhD students and postdocs, as well as visitors who will be around for the full length of the course. Typically PhD students take the presentation course once they have been at MPI for at least one semester and they are done with their course requirements. As long as you have made enough research project to give a short presentation on your research, then you are ready for the presentation course! Postdocs are also encouraged to attend. Even postdocs who have previously taken a presentation skills course have told me that they learned a lot in this course. *When*: We will meet once a week for two hours at a time. I am tentatively planning to start the presentation class in late April, but the exact start date will depend on participants' constraints. *Workload*: The main out-of-class workload will be preparing two talks: a short talk (about 8 minutes) and a longer conference-style talk (about 20 minutes). You will prepare the talk, present it in class, revise it to address the feedback you receive, and present it a second time. You will also be expected to write up self-evaluations after each presentation, summarizing the feedback you received and how you addressed it. *Where*: Zoom

This course will cover both the writing process and the writing product. You will learn writing principles that will you help you to create text that is coherent, cohesive, and clear. A primary goal of this course is to teach you how to "escape" your own expertise in order to identify the parts of your text that will cause a reader difficulties. 

The course format will vary from week-to-week, and will include a mix of mini-lectures, exercises, one-on-one feedback, and group discussions of part of a paper (usually written by a course participant but sometimes selected from the literature). In order to get the most out of the class, participants will be expected to do substantial out-of-class writing (about one to two hours per week). The precise content of the course will be tailored to the course participants.

Prerequisites

This course is intended for PhD students and postdocs in Computer Science. For PhD students, I typically prefer that students have already taken my course on how to give scientific presentations. I do make exceptions, but students need to demonstrate that they already have basic competence at communicating scientific ideas verbally.


What: In this tutorial we will discuss how to write effective emails. I'll explain the differences between formal and informal emails in English (including openings, closings, and common polite expressions) and provide many examples of well-written and poorly written emails. We'll cover the most common mistakes that both native- and non-native speakers make when writing emails, and give feedback to course participants on sample emails that they have selected for critique. When: This will be a two-part tutorial most likely taking place sometime in April or early May. Each meeting will last two hours. In the first meeting we will focus on high-level issues including formality, etiquette, organization, and structure. In the second meeting we will cover low-level English expressions and grammar errors that come up often in emails. You may attend both of the meetings or just one. Who: All institute members are welcome to attend, including both scientific and non-scientific staff. Where: Zoom

This course will cover both the writing process and the writing product. You will learn writing principles that will you help you to create text that is coherent, cohesive, and clear. A primary goal of this course is to teach you how to "escape" your own expertise in order to identify the parts of your text that will cause a reader difficulties. 

The course format will vary from week-to-week, and will include a mix of mini-lectures, exercises, one-on-one feedback, and group discussions of part of a paper (usually written by a course participant but sometimes selected from the literature). In order to get the most out of the class, participants will be expected to do substantial out-of-class writing (about one to two hours per week). The precise content of the course will be tailored to the course participants.

Prerequisites

This course is intended for PhD students and postdocs in Computer Science. For PhD students, I typically prefer that students have already taken my course on how to give scientific presentations. I do make exceptions, but students need to demonstrate that they already have basic competence at communicating scientific ideas verbally.


The English Reading Group meets once a week throughout the year to focus on improving general verbal communication skills, pronunciation, and non-technical vocabulary.

Common activities include:

- Reading fiction and non-fiction pieces such as news articles, book chapters, and short stories to discuss in addition to examining vocabulary and language use.
- Grammar topics including phrasal verbs, idioms, and articles (a/ an and the).
- Practice and guidance with difficult pronunciation.
- Non-technical writing practice and editing.
- Other topics of student choice.