Advanced Software Engineering, Spring 2019

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. The lectures will be complemented by a project and student presentations, which enables active learning during the lecture and a realistic use case that serves as an exmaple to support the preparation before and after the lecture.

The project this year is about replicating a recommender system for software engineering. You will work in teams of 3-4 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.

We will have a written exam, unless the number of participants is low. The final grade will be based on all three parts: project, presentations, and the exam.

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

  • Due to a room conflict, the lecture will take place in room BIN-1.D.29 from now on (Mar 6)

Organization

Instructors:

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
Contact: Please email Sebastian Proksch for any administrative matters

Please refer to the kick-off slides for further details regarding the organization, like the course structure or the grading.

Schedule

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

Slides, Project Slides,

Project Description

25.02. Program Representations and Parsing Alexandru

Slides, Demo

04.03. Static Analysis Proksch Slides, Demo, Visitor Pattern
11.03. Code Smells and Refactoring Palomba Slides
18.03. Mining Software Repositories Proksch Slides
25.03 Testing Proksch Slides, Demo, Strategy Pattern
01.04. Midterm Project Presentations All Participants  
08.04. No Lecture (Sechseläuten)    
15.04. DevOps & Continuous Integration Vassallo Slides
22.04. No Lecture (Osterferien)    
29.04. Release Engineering Schermann Slides
06.05. Software Architecture Proksch Slides
13.05. Aspect-Oriented Programming Gall Slides
20.05. Final Project Presentations All Participants  
27.05. No Lecture    
31.05. Final Project Submission All Participants Links to Repository, Models, Package, etc.
17.06. Written Exam All Participants  

All lectures will take place on Monday, 10:15am to 12pm, in room BIN-1.D.29. The exam will take place on June 17, 10:15am to 12pm, in room 2.A.10.