Main content

Courses in Spring Semester 2017

Formal Methods and Functional Programming

In this course, participants will learn about new ways of specifying, reasoning about, and developing programs and computer systems. Our objective is to help students raise their level of abstraction in modelling and implementing systems.

Software Architecture and Engineering

Software engineering is an engineering discipline whose focus is the cost-effective development of high-quality software systems. The emphasis in software engineering is on both words, software and engineering. An engineer is able to build a high-quality product using off-the-shelf components and integrating them under time and budget constraints.

This course will cover key techniques for building reliable software. These include: modeling, design patterns, code refactoring, testing, symbolic execution, as well as static and dynamic program analysis. To gain a deeper understanding of how to apply these techniques in practice, the course will also involve two hands-on projects based on the principles introduced in the lectures.

Program Verification

A hands-on introduction to the theory and construction of deductive software verifiers, covering both cutting-edge methodologies for formal program reasoning, and a perspective over the broad tool stacks making up modern verification tools.

Seminars in Spring Semester 2017

Programming Systems Seminar

This graduate seminar provides doctoral students in computer science a chance to read and discuss current research papers. Enrollment requires permission of the instructors. Credit units are granted only to active participants.

The main goals of this seminar are learning about current research results in the area of programming languages, static program analysis, program verification, and related areas, as well as practice of scientific presentations and discussions. 


Student Theses

We offer many different topics for Master's theses, Bachelor's theses, and Research in Computer Science Projects. The projects cover various areas including programming languages, programming tools, program verification, static program analysis, and testing. Student projects in our group are typically embedded in larger research projects. Therefore, the available topics change frequently as our research progresses. Contact one of us or check the list of open topics to learn about the student projects we currently offer.



Page URL: http://www.pm.inf.ethz.ch/education.html
Thu Apr 27 15:41:41 CEST 2017
© 2017 Eidgenössische Technische Hochschule Zürich