252-0216-00L  Software Architecture and Engineering

SemesterSpring Semester 2013
LecturersM. Vechev, M. Pradel
Periodicityyearly course
Language of instructionEnglish

Catalogue data

AbstractThis 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
ObjectiveThe 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.
ContentSome 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.
LiteratureWill 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 credits8 credits
ExaminersM. Vechev, M. Pradel
Typesession examination
Language of examinationEnglish
Course attendance confirmation requiredNo
RepetitionThe performance assessment is only offered in the session after the course unit. Repetition only possible after re-enrolling.
Mode of examinationwritten 180 minutes
Additional information on mode of examinationThe grade will be determined by:
- 1 coding project 20%
- 1 coding project 20%
- 1 written project 10%
- Final Exam 50%
Written aidsNone.
This information can be updated until the beginning of the semester; information on the examination timetable is binding.

Learning materials

Main linkInformation
Only public learning materials are listed.


252-0216-00 VSoftware Architecture and Engineering4 hrs
Mon08-10CAB G 61 »
Wed10-12CAB G 61 »
M. Vechev, M. Pradel
252-0216-00 USoftware Architecture and Engineering3 hrs
Mon15-18CHN G 22 »
15-18ML H 34.3 »
15-18NO D 11 »
15-18NO E 11 »
25.02.15-18CAB G 61 »
25.03.15-18CAB G 61 »
27.05.15-18CAB G 61 »
M. Vechev, M. Pradel


There are no additional restrictions for the registration.

Offered in

Computer Science BachelorMajor in Computer and Software EngineeringOInformation
Certificate of Advanced Studies in Computer ScienceCompulsory Major CoursesWInformation