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