Architectural Thinking for Intelligent Systems, Special Lecture Prof. Dr. Jana Koehler



Assignment 1 open!

Assignment 1 is online and can be found at the materials page, in the tutorials overview or here.

It has to be handed in via Submission in your Personal Status page until 17:59 on Sunday 03.11.2019.


Materials are Online

All lecture slides and some additional materials are now available! Have a look at the Materials page.


Registration for the lecture is open for students until October 27, 2019

Please use the button in the menu bar above to register. Registration is possible with a UdS email address and matriculation number. If you do not have these yet, because you are an incoming foreign student, please contact directly.



The development of Intelligent Systems requires the Integration of AI technologies into already complex software and hardware environments. This poses a number of challenges, such as for example how to keep these systems easy to maintain by developers or easy to interact with for their human users.

We need  to systematically analyze the desired functional requirements and system qualities, and to apply methods of modern architectural thinking in order to find appropriate and elegant architectures for AI systems.

This lecture teaches established and successful methods that software architects apply for the systematic planning, conception, and evaluation of complex software (and hardware) architectures in the context of Intelligent Systems. We sharpen our understanding of architectural concerns that give rise to architectural decisions a good software architect needs to be aware of. We also learn how we can evaluate software architectures before a system is built and how architectural decision making helps minimizing risks in complex (AI) software development projects.

The lecture focuses on methods to discuss complex AI systems on the conceptual level. Our goal is to foster an abstract, but still precise thinking about software as an architectural systems, which abstracts from specific design and implementation details. We learn the terminology and methods used by software architects and practice them by working on a specific architectural project during the semester. The focus of the lecture is on systematic conceptual thinking, method-based communication and risk mitigation, not on implementation or theoretical properties of algorithms. We practice to communicate about complex software systems with different stakeholders and acquire the basic skills of software architects, nowadays one of the most interesting and most seeked of IT professions.

Each participating student (or student team) is expected to choose a system, for which an architecture needs to be devised. Such a system can be

  • a known AI system already in existence (e.g. Google search, Alexa, a subsystem of Facebook, a Natural-Language based application, etc.),
  • a specific system or app, that a team wants to build, is building, or has built in the past,
  • any other app or system (including non-AI), a team wants to use for practicing the methods taught in this course.

Every week, we learn about a specific architectural method and subsequently apply this method to the chosen system.  Architectural drafts are discussed during the weekly tutorials. Tutorial guidelines are available, which help the student teams to apply the method to their system and work out their specific solution. Each team submit their solution every week and a selected teams will present during the tutorial. The teams who present are announced at the beginning of the tutorial session.

Personal presence of each student in at least 80% of tutorials is required and a prerequisite for admission to the examen. In addition, at least one team member from every team must be present in every tutorial. Solutions will be shared and discussed among participants. Mutual feedback helps all teams to deepen their understanding of architectural methods and to master these methods in practice.

At the end of the course (until last tutorial), each team is expected to have submitted all solutions to all tutorial assignments, such that a complete architectural documentation of their selected system is availalbe in written form. Formal acceptance of all solutions for the tutorial assignments is a prerequisite to participate in the written exam (90 minutes).

Admission Requirements

You have successfully attended the SOPRA course (software practicum) at UdS or taken a similar course on software engineering, which includes a practical software project and building a larger piece of software. We assume that you have basic knowledge of

  • Software and Systems Modeling
  • Software Engineering & Development
  • Agile software development methods (Scrum)
  • Software project management

A course on artificial intelligence is a plus, but not a mandatory admission requirement. For more information see LFS entry.

Time Schedule Overview


Mondays, 14.15 h - 16.00 h
starting: 21.10.2019,
ending: 03.02.2020
Lecture Hall 001 in building E1 3


Mondays, 10:15 h - 11:45 h
starting: 04.11.2019
ending: 03.02.2020
Lecture Hall 003 in building E1 3

Summary &
Examen Preparation

Wednesday, 10:15 - 12:00
on: 05.02.2020
Room -2.17 (Reuse) in building D3 2


Friday, 10:00 - 12:00
on: 14.02.2020
Lecture Hall 00? in building E1 3

Privacy Policy | Legal Notice
If you encounter technical problems, please contact the administrators