Advanced Software Engineering - FS 18

Deepen your knowledge about advanced software engineering practices. This course covers the following specific topics: software architecture and design, testing, program representations, static analysis, mining software repositories, release engineering, performance optimization, aspect-oriented programming, cloud applications, and further selected topics. This course also contains a practical part, in which students will rebuild a software development tool from the literature.

Learning Goals: Learn advanced techniques, methods, and processes in software engineering and apply them in practice.

Update (May 14): As listed in the course catalog, we will have a written exam. Date and location have been added to the schedule.

Update (May 14): Please make sure that you fill the questionnaire for the quality assessment of the lecture, to help us to further improve the lecture in the future.



Prof. Dr. Harald Gall, Sebastian Proksch, and others.

Schedule: Mondays, 10:15am-12:00pm, Room 2.A.10
Language: English
AP (ECTS): 6.0
Target audience: Students in MSc Informatik
Requirements: MSc Informatik: Master-Basismodul
Software Engineering, Programming, Distributed Systems
Registration: UZH Buchungstool
VVZ: organizational details in UZH online course catalog (VVZ)
Contact: Please email Sebastian Proksch for any administrative matters


This course offers a combination of lectures and a project with a presentation. This structure allows the students to actively learn during the lecture and in preparation before and after the lecture using concrete examples.

The examination in Advanced Software Engineering will be oral. The precise examination date will be announced in time, during the semester. It will be possible to register for an examination time slot of student's choice. 

Grading will be based on all three parts: project, presentations, and the oral exam.


The project this year is about replicating a recommender system for software engineering. You will work in teams of 2-3 students. We will prepare a list of scientific papers that propose recommender systems, e.g., Intelligent Code Completion With Bayesian Networks. Each team will pick one paper and will rebuild the proposed recommendation system and replicate the experiments shown in the paper.

The project is presented to the rest of the class on two presentation days. The first presentation should focus on the static analyses and your concept on how to build the recommender, while the second presentation should introduce the evaluation approach and present the recommender in action.


Date Topic Lecturer Material
19.02. Kickoff and Introduction of Project Proksch

Slides, Project Slides,

Project Description

26.02. Software Architecture Proksch Slides, Mandatory Reading
05.03. Testing Vassallo Slides
12.03. Program Representations and Parsing Alexandru Slides, Examples
19.03 Static Analysis Proksch Slides, Visitor Pattern, Examples
26.03. Mining Software Repositories Proksch Slides
02.04. No Lecture (Ferien)    
09.04. Midterm Project Presentations All Participants  
16.04. No Lecture (Sechseläuten)    
23.04. Release Engineering Schermann Slides
30.04. Optimization and Performance Laaber Slides
07.05. Aspect-Oriented Programming Gall Slides
14.05. Final Project Presentations All Participants  
21.05. No Lecture (Pfingstmontag)    
28.05. No Lecture    
01.06. Final Submission All Participants Links to Repository, Models, Package, etc.
18.06. Written Exam All Participants 10:15 - 12:00 Uhr, AND-2-04