Software Engineering for Artificial Intelligence

Data-driven artificial intelligence (AI) solutions are being adopted in many areas, including finance, medicine, cognitive sciences, and biology. Such machine learning (ML) approaches require an accurate domain and requirement analysis, proper software design and development, dedicated testing and debugging, as well as specific techniques that ensure scalability and maintainability. While AI-enabled systems continue to have a tremendous impact on many fields, developers and data scientists still follow methods (scripting, informal/non-written specifications, trial-and-error testing) that do not conform to the state of the art of engineering disciplines. In this context, it is of paramount importance to take advantage of the decades-long developments of software engineering (SE) to systematize the development process of ML solutions.

In this course, each student will be assigned a topic regarding SE for AI. Based on provided resources and personal extending research, each student prepares a presentation with following discussion. These will be conducted in regular appointments. The students not presenting at a particular date, prepare via introductory reading for the respective discussion. Grading will be based on the preparation of the assigned topic and its presentation, as well as on the participation in all the discussions.

Learning Outcomes

The students develop a deeper understanding of software engineering for artificial intelligence. This includes the key topics requirements engineering, quality assurance, development processes, and software architecture and design accounting for modularity, reusability, efficiency, scalability, fairness and privacy.

The students learn the preparation and the presentation of scientific contents for an audience with heterogeneous background knowledge. Moreover, students train efficient preparation of and active participation in scientific discussions as well as their moderation.

Advisors

This seminar is provided to you jointly by the groups Reactive Programming Technology and Software Technology at the Computer Science Department of Technical University of Darmstadt.

Schedule & Announcements

The appointments of the seminar are mandatory for all participants. After two initial appointments we will take a break for a couple of weeks, which is intended to be used by the participants for their presentation preparation. Afterwards we continue with weekly appointments with two topic presentations and discussions each. For these the participants are separated into two batches. Each batch has its own meetings and students attend only the meetings of their respective batch. Due to the current situation in the summer semester 2020, all meetings of this seminar will be held online via Zoom. The meeting credentials will be published on this page.

Introductory Reading Material: For all presentations we will publish a list of introductory reading material roughly one week before the meeting on this page. We assume that all participants of a meeting prepare for it by reading it beforehands. For all materials we provide a link, allowing free access for all TU Darmstadt students. Depending on the source it might be that accessing the material either requires you to log in with your ULB Darmstadt account (“Bibliothekskonto”) or to access it from the campus network or via the campus VPN.

Appointments for all participants

21.04.2020 16:00: Kickoff (Slides)
Motivation, Seminar Structure & Grading, Schedule, Topics & Registration.
05.05.2020 17:00: Basics and Challenges (Talk Slides, Organizational Slides)
Example presentation and discussion for the meetings later on in the semester.
Introductory reading material

Meetings of the Tuesday-batch

The introductory reading material lists and the slides below are provided by the participants of this course.

02.06.2020 17:00
Choosing AI Techniques (Slides)
Introductory reading material
Software Architecture of AI-enabled Systems (Slides)
Introductory reading material
  • Section 2 (pp. 3 – 5) of Garlan, David and Shaw, Mary. An Introduction to Software Architecture. Advances in Software Engineeringand Knowledge Engineering, Volume I. 1993.
    As a refresher for the general topic of software architecture we recommend reading chapter 2 of this paper. It provides you with both a short history of the field in addition to mentioning some of the most commonly found architecture patterns. If you like you could also take a look at the next chapter (3), which presents some patterns in more detail.
  • Section 5 (pp. 4 – 6) of Sculley, David et al. Hidden Technical Debt in Machine Learning Systems. NIPS 2015. 2015.
    This paper explores the problem of ever increasing cost regarding the maintenance of machine learning systems. The section "ML-System Anti-Patterns" will give you an overview over some of the specific machine learning related anti-patterns which have to be considered when designing an ai-enabled system.
  • Section 4.4.1 (pp. 15f) of Rahman, Md Saidur et al. Machine Learning Software Engineering in Practice: An Industrial Case Study. CoRR, abs/1906.07154. 2019.
    The required reading section of this paper presents software engineering recommendations regarding the development of an ai-enabled application. They stem from the analysis of an industrial application (automatic error detection in SAP systems) and provide a good baseline for evaluating different system architectures (for ai-enabled applications).
  • Complete article of Joshi, Naveen. Why you should deploy AI models as microservices. Allerin. 28/01/2020.
    This short blog post explains the benefits of encapsulating ai systems inside microservices for easy deployment inside larger applications. Since this pattern seems to have proven quite popular we plan to specifically focus on microservices in our presentation.
  • (Optional reading) Bezema, Rutger. Unexplored territory: integrate AI into a microservice architecture. Medium. 18/11/2019.
    This last blog post describes how Rewe digital deployed their ai-based product-recognition system using microservices. We provide this as an optional reference for people who are interested in a more real world use case regarding the process of putting research code into production.
09.06.2020 17:00
Requirements and Risks (Slides)
Introductory reading material
Model Quality & Metamorphic Testing (Slides)
Introductory reading material
16.06.2020 17:00
Data Quality Assurance (Slides)
Introductory reading material
A/B Testing (Slides)
Introductory reading material
23.06.2020 17:00
Debugging (Slides)
Introductory reading material
Data Provenance & Reproducibility (Slides)
Introductory reading material
30.06.2020 17:00 (Outro Slides)
Computational Notebooks (Slides)
Introductory reading material
Last meeting of the seminar for students of the Tuesday-batch.

Meetings of the Thursday-batch

The introductory reading material lists and the slides below are provided by the participants of this course.

04.06.2020 17:00
Choosing AI Techniques
Introductory reading material
Software Architecture of AI-enabled Systems (Slides)
Introductory reading material
18.06.2020 17:00
Requirements and Risks (Slides)
Introductory reading material
Model Quality & Metamorphic Testing (Slides)
Introductory reading material
25.06.2020 17:00
Data Quality Assurance (Slides)
Introductory reading material
Debugging (Slides)
Introductory reading material
02.07.2020 17:00 (Outro Slides)
Data Provenance & Reproducability (Slides)
Introductory reading material
Computational Notebooks (Slides)
Introductory reading material
Last meeting of the seminar for students of the Thursday-batch.

Attendance via Zoom

Being aware that video conferences can feel less natural than in-presence courses, we are confident that we still can provide well working interactive sessions. Please help us with your motivation and consider the following points. Let‘s try to make this a great experience for all of us :)

check Please check your setup before the meeting. We start all calls 10 minutes early, where you can do so. Moreover, you can use the Zoom audio settings dialog and zoom.us/test.

time Please connect before the meeting starts.

identity Please join using your full name. If you use a nickname or pseudonym, tell the advisors (needed for grading).

microphone and camera Please join with a microphone and a camera: It improves the overall experience in interactive parts.

microphone off Please mute your microphone when not speaking.

smile Interact: ask questions and involve yourself into the discussion.