252-0216-00L  Software Architecture and Engineering

Semester Spring Semester 2013
Lecturers M. Vechev, M. Pradel
Periodicity yearly course
Language of instruction English

Catalogue data

Abstract This course introduces both theoretical and applied aspects of software analysis and engineering. We will cover both the theoretical and practical aspects of:

- Software Architecture
- Modelling
- Design Patterns
- Code Refactoring
- Program Testing
- Dynamic Program Analysis
- Static Program Analysis
Objective The course has 2 main objectives:

- Obtain an end-to-end (both, theoretical and practical) understanding of the core techniques used for building quality software.

- Understand how to apply these techniques in practice.
Content Some of the core technical topics covered will be:

- modeling and mapping of models to code
- common code design patterns and how to apply them
- refactoring (as used in all modern development environments today): why, when and what to refactor
- testing: functional, model-based, structural, object-oriented, fault-based testing
- dynamic analysis: semantics, race detection, typestate analysis
- symbolic execution
- static program analysis: lattices, abstractions, fixed points, abstract domains.

To aid in practical understanding, the course will contain 2 projects: one for testing and the other for static program analysis where for both the students will build practical analyzers gaining hands-on understanding for how the concepts work.
Literature Will be announced in the lecture.

Performance assessment

Performance assessment information (valid until the course unit is held again)
Performance assessment as a semester course
ECTS credits 8 credits
Examiners M. Vechev, M. Pradel
Type session examination
Language of examination English
Course attendance confirmation required No
Repetition The performance assessment is only offered in the session after the course unit. Repetition only possible after re-enrolling.
Mode of examination written 180 minutes
Additional information on mode of examination The grade will be determined by:
- 1 coding project 20%
- 1 coding project 20%
- 1 written project 10%
- Final Exam 50%
Written aids None.
This information can be updated until the beginning of the semester; information on the examination timetable is binding.

Learning materials

Main link Information
Only public learning materials are listed.


Number Title Hours Lecturers
252-0216-00 V Software Architecture and Engineering 4 hrs
Mon 08-10 CAB G 61 »
Wed 10-12 CAB G 61 »
M. Vechev, M. Pradel
252-0216-00 U Software Architecture and Engineering 3 hrs
Mon 15-18 CHN G 22 »
15-18 ML H 34.3 »
15-18 NO D 11 »
15-18 NO E 11 »
25.02. 15-18 CAB G 61 »
25.03. 15-18 CAB G 61 »
27.05. 15-18 CAB G 61 »
M. Vechev, M. Pradel


There are no additional restrictions for the registration.

Offered in

Programme Section Type
Computer Science Bachelor Major in Computer and Software Engineering O Information
Certificate of Advanced Studies in Computer Science Compulsory Major Courses W Information