printlogo
http://www.ethz.ch/index_EN
Welcome
 
print
  

Education

Open Positions

We are recruiting PhD students in program verification, programming languages, and programming environments. Check out the job descriptions.

Our Mailing List

If you are interested in our activities, you can subscribe to the PMInterest mailing list.

Available Student Projects

Our group offers many different topics for Master's theses, Bachelor's theses, and Research in Computer Science Projects. 

Courses in Spring Semester 2012

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 survey the principles, methods, and tools of software engineering. At the core of the course are the classical phases of the software development lifecycle: requirements analysis, system and detailed design, implementation, test, and maintenance. The course will also cover topics bridging software engineering and project management.

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 modeling and implementing systems.

The first part of the course will focus on designing and reasoning about functional programs. Functional programs are mathematical expressions that are evaluated and reasoned about much like ordinary mathematical functions. As a result, these expressions are simple to analyze and compose to implement large-scale programs. We will cover the mathematical foundations of functional programming, the lambda calculus, as well as higher-order programming, typing, and proofs of correctness.

The second part of the course will focus on deductive and algorithmic validation of programs modeled as transition systems. As an example of deductive verification, students will learn how to formalize the semantics of imperative programming languages and how to use a formal semantics to prove properties of languages and programs. As an example of algorithmic validation, the course will introduce model checking and apply it to programs and program designs.

Static Program Analysis

Program analysis infers properties of programs by statically computing an approximation of all possible dynamic behaviors. It is one of the most powerful techniques to enable code optimizations and to detect program errors at compile time.

This course will cover established foundations and practical applications of static program analysis as well as recent research results. It provides an introduction to data flow analysis and its main representatives. The main focus of the course will be on abstract interpretation, covering foundations, advanced notions of numerical and heap abstractions, and their applications.


Seminar in Spring Semester 2012

Research Topics in Software Engineering

The aim of this seminar is to introduce students to recent research results in the area of programming languages, program analysis, and software engineering. To accomplish that, students will study and present research papers in the area as well as participate in paper discussions. The papers will span topics in both theory and practice ranging from foundations of automatic program verification and synthesis to techniques for dynamic analysis and testing of sequential and concurrent programs.

Objective:

At the end of the course, the students should:

- be familiar with a broad range of key research results in the area of programming languages.

- know how to read and assess papers in the area.

- be able to highlight limitations of existing work and outline potential improvements. 

Students 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.



 

Wichtiger Hinweis:
Diese Website wird in älteren Versionen von Netscape ohne graphische Elemente dargestellt. Die Funktionalität der Website ist aber trotzdem gewährleistet. Wenn Sie diese Website regelmässig benutzen, empfehlen wir Ihnen, auf Ihrem Computer einen aktuellen Browser zu installieren. Weitere Informationen finden Sie auf
folgender Seite.

Important Note:
The content in this site is accessible to any browser or Internet device, however, some graphics will display correctly only in the newer versions of Netscape. To get the most out of our site we suggest you upgrade to a newer browser.
More information

© 2012 ETH Zurich | Imprint | Disclaimer | 30 January 2012
top