Software Architecture and Engineering (Part II)

Spring 2018
Prof. Dr. Martin Vechev (Part II), Prof. Dr. Peter Mueller (Part I)
Federico Poli, Matthew Mirman, Benjamin Bichsel
EDoz Link
EDoz link
Lecture Time and Place
Mon 10-12, CAB G61
Wed 10-12, CAB G61
Exercise Time and Place
Mon 13-16, CHN D44
Tue 15-18, ML E12
Thu 15-18, ETZ F91

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.

Project (Part II):

Please see the project description here: Project (Part II)

Lectures (Part II):

No. DateContentSlides Exercises Solutions
6 Apr 18, 23Introduction to Analysis PDF PDF PDF PDF
7 Apr 25, April 30Mathematical Background for Analysis PDF PDF PDF
9 May 2Application of AI to Numerical PDF PDF PDF
10 May 7Application of AI to Heap PDF PDF PDF
11 May 14Symbolic Execution for Test Case Generation PDF PDF ZIP
12 May 16Application of Concepts: Analysis of HPC/GPU programs PDF
13 May 23Dynamic Race Detection PDF