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.
|Schedule:||Mondays, 10:15am-12:00pm, Room 2.A.10|
|Target audience:||Students in MSc Informatik|
|Requirements:||MSc Informatik: Master-Basismodul
Software Engineering, Programming, Distributed Systems
|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.
|19.02.||Kickoff and Introduction of Project||Proksch|
|26.02.||Software Architecture||Proksch||Slides, Mandatory Reading|
|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)|
|30.04.||Optimization and Performance||Laaber||Slides|
|14.05.||Final Project Presentations||All Participants|
|21.05.||No Lecture (Pfingstmontag)|
|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|