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
- Chapter 1 of Géron, Aurélien. Hands-on machine learning with Scikit-Learn, Keras, and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems. 2nd edition. O’Reilly. 2019.
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
- Chapter 16 of Hulten, Geoff. Building Intelligent Systems: A Guide to Machine Learning Engineering. Apress. 2018.
- Complete article of Brownlee, Jason. A Tour of Machine Learning Algorithms. Machine Learning Mastery. 12/08/2019.
- 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.
-
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.
- 09.06.2020 17:00
- Requirements and Risks (Slides)
Introductory reading material
- Chapter 6 and Chapter 7 of Hulten, Geoff. Building Intelligent Systems: A Guide to Machine Learning Engineering. Apress. 2018.
- Abstract, Sections I., II., III. and V. of Breck, Eric et al. The ML Test Score: A Rubric for ML Production Readiness and Technical Debt Reduction. Proceedings of IEEE Big Data 2017. 2017.
- Abstract, Sections 1 and 2 of Sculley, David et al. Machine Learning: The High-Interest Credit Card of Technical Debt. SE4ML: Software Engineering for Machine Learning (NIPS 2014 Workshop). 2014.
- Model Quality & Metamorphic Testing (Slides)
Introductory reading material
- Abstract, Sections 1. and 2. of Weyuker, Elaine J. On Testing Non-testable Programs. The Computer Journal, vol. 25, no. 4, pp. 465 – 470. 1982.
- Complete article of Shah, Tarang. About Train, Validation and Test Sets in Machine Learning. Towards Data Science. 06/12/2017.
- Chapter 19 from "Types Of Mistakes" to "Evaluating Rankings" (pp. 227 – 232) of Hulten, Geoff. Building Intelligent Systems: A Guide to Machine Learning Engineering. Apress. 2018.
- Complete article of Gandhi, Rohith. Naive Bayes Classifier. Towards Data Science. 05/05/2018.
- 16.06.2020 17:00
- Data Quality Assurance (Slides)
Introductory reading material
- Abstract and Sections 1, 2 and 3.1 of Torralba, Antonio and Efro, Alexei A. Unbiased Look at Dataset Bias. IEEE Conference on Computer Vision and Pattern Recognition (CVPR). 2011.
- (Optional reading) Complete article. The Size and Quality of a Data Set. Google Developers. 11/07/2019.
- (Optional reading) Complete article. Identifying Labels and Sources. Google Developers. 20/08/2019.
- Abstract and Sections 1 and 2 of Gao, Jerry et al. Big Data Validation and Quality Assurance – Issuses, Challenges, and Needs. 10th IEEE International Symposium on Service-Oriented System Engineering. 2016.
- Abstract and Section 1 of Rekatsinas, Theodoros et al. HoloClean: Holistic Data Repairs with Probabilistic Inference. Proceedings of the VLDB Endowment, Vol. 10, No. 11. 2017.
- Abstract and Section 1 of Schelter, Sebastian et al. Automating Large-Scale Data Quality Verification. Proceedings of the VLDB Endowment, Vol. 11, No. 12. 2018.
- A/B Testing (Slides)
Introductory reading material
- Complete article of Dancho, Matt. A/B Testing with Machine Learning - A Step-by-Step Tutorial. Business Science. 11/03/2019.
- Complete article of Haq, Sarim. How We Dumped A/B Testing For Machine Learning. Towards Data Science. 22/04/2019.
- Complete article of Dalinina, Ruslana. Testing Predictive Models in Production. Oracle. 2018.
- Complete article of Patruno, Luigi. A/B Testing Machine Learning Models (Deployment Series: Guide 08). ML in Production. 25/05/2020.
- 23.06.2020 17:00
- Debugging (Slides)
Introductory reading material
- Complete article of Hall, Patrick and Burt, Andrew. Why you should care about debugging machine learning models. O'Reilly. 12/12/2019.
- (Optional reading) Complete article of Enam, S. Zayd. Why is machine learning 'hard'?. Zayd's Blog. 10/11/2016.
- Abstract and Sections 1, 2 and 6 of Ma, Shiqing et al. MODE: Automated Neural Network Model Debugging viaState Differential Analysis and Input Selection. Proceedings of the 26thACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE ’18). 2018.
- Abstract and Introduction of Kulesza T. et al. Principles of Explanatory Debugging to Personalize Interactive Machine Learning. Proceedings of the 20th International Conference on Intelligent User Interfaces (pp. 126-137). 2015.
- Abstract and Introduction of Krishnan, Sanjay and Wu, Eugene. PALM: Machine Learning Explanations For IterativeDebugging. Proceedings of HILDA’17. 2017.
- (Optional watching) of Caruana, Rich. Friends Don't Let Friends Deploy Black Box Models: The Importance of Intelligibility in Machine Learning. YouTube. 15/08/2019.
- (Optional watching) of Entertainment Access. JEXI Trailer. YouTube. 26/08/2019.
- Data Provenance & Reproducibility (Slides)
Introductory reading material
- Sections 1 and 5 of Smart, Ashley G. The war over supercooled water. Physics Today. 22/08/2019.
- Complete article of Warden, Pete. The Machine Learning Reproducibility Crisis. Pete Warden's Blog. 19/03/2018.
- Complete article. Data Lineage Vs Data Provenance. TopperTips. 11/10/2019.
- Section 3.1 of Glavic, Boris and Dittrich, Klaus. Data Provenance: A Categorization of Existing Approaches. Datenbanksysteme in Business,Technologie und Web (BTW) / 12. Fachtagung des GI-Fachbereichs "Datenbanken und Informationssysteme"(DBIS). 2007.
- Abstract and Introduction of Halevy, Alon et al. Goods: Organizing Google’s Datasets. SIGMOD/PODS’16. 2016.
- 30.06.2020 17:00 (Outro Slides)
- Computational Notebooks (Slides)
Introductory reading material
- Setcion 2.1 of Wang, April Yi et al. How Data Scientists Use Computational Notebooks for Real-Time Collaboration. Proc. ACM Hum.-Comput. Interact.3, CSCW, Article 39. 2019.
Highlights the steps of data science process. - Abstract, Introduction and Related Work (pp. 1 – 3) of Rule, Adam et al. Exploration and Explanation in Computational Notebooks. Proceedings of the 2018 CHI Conference on Human Factors in Computing Systems. 2018.
Explains exploration, explanation, computational narratives as important aspects in computational notebooks. - Section 3 and 4 of Head, Andrew et al. Managing Messes in Computational Notebooks. Proceedings of the 2019 CHI Conference on Human Factors in Computing Systems. 2019.
Describes one of the main problems with notebooks, their messiness, and describes a tool that tries to untangle the mess. - Section "Pain Points of Using Notebooks" (pp. 3 – 7) of Chattopadhyay, Souti et al. What’s Wrong with Computational Notebooks? Pain Points, Needs, and Design Opportunities. Proceedings of the 2020 CHI Conference on Human Factors in Computing Systems. 2020.
Presents nine pain points observed in the workflow of data scientists based on interviews and surveys.
- Setcion 2.1 of Wang, April Yi et al. How Data Scientists Use Computational Notebooks for Real-Time Collaboration. Proc. ACM Hum.-Comput. Interact.3, CSCW, Article 39. 2019.
- 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
- Complete slides of Mutaria, Achmad Benny. An Executive's Guide to Artificial Intelligence. 2018.
- Complete article of Lambert, Nathan. Machine Learning Engineer versus Software Engineer. Towards Data Science. 31/03/2020.
- Software Architecture of AI-enabled Systems (Slides)
Introductory reading material
- Abstract, Intro, Section 2, and Section 4 of Sculley, David et al. Hidden Technical Debt in Machine Learning Systems. NIPS 2015. 2015.
Technical debt and its connection AI Architecture (~15 min.). - Section IV B "Production Challenges" of Arpteg, Anders et al. Software Engineering Challenges of Deep Learning. SEAA 2018. 2018.
Production Challenges in Deep Learning Systems (~5 min.). - Complete article of Hulten, Geoff. Closed-Loop Intelligence: A Design Pattern for Machine Learning. Microsoft Docs. 01/04/2019.
Introduction to Closed-Loop Intelligence (~15 min.). - Complete article of Smith, Daniel. Exploring Development Patterns in Data Science. Theory Lane. 02/10/2017.
Development Patterns in Data Science (~10 min.). - "Training-Serving Skew" (after Rule #28) – Rule #37 of Zinkevich, Martin. Rules of Machine Learning: Best Practices for ML Engineering. Google Developers. 12/06/2019.
Training/Serving Skew - Difference between training and serving environment (~15 min.).
- Abstract, Intro, Section 2, and Section 4 of Sculley, David et al. Hidden Technical Debt in Machine Learning Systems. NIPS 2015. 2015.
- 18.06.2020 17:00
- Requirements and Risks (Slides)
Introductory reading material
- Sections V and VI of Vogelsang, Andreas, and Borg, Markus. Requirements Engineering for Machine Learning: Perspectives from Data Scientists.. In Proc. of the 6th International Workshop on Artificial Intelligence for Requirements Engineering (AIRE). 2019.
- Sections II, III and IV of Rahimi, Mona et al. Toward Requirements Specification for Machine-Learned Components. 2019 IEEE 27th International Requirements Engineering Conference Workshops (REW). 2019.
- Introduction and Section 4 of Corbett-Davies, Sam, and Goel, Sharad. The Measure and Mismeasure of Fairness: A Critical Review of Fair Machine Learning. arXiv preprint arXiv:1808.00023. 2018.
- Model Quality & Metamorphic Testing (Slides)
Introductory reading material
- Chapter 3 starting from "Asking Simple Questions of Data" (pp. 27 – 33) of Hulten, Geoff. Building Intelligent Systems: A Guide to Machine Learning Engineering. Apress. 2018.
Introduction to different parts of data processing and usage. - Complete article of Perlin, Michael. Quality Assurance for Artificial Intelligence (Part 2). Medium. 09/03/2020.
Evaluating model quality in general. - Chapter 19 until "Using Data for Evaluation" (pp. 225 – 232) of Hulten, Geoff. Building Intelligent Systems: A Guide to Machine Learning Engineering. Apress. 2018.
Main ways to evaluate intelligence, properties of effective intelligence, risks with historical data. - Sections 3.4 and 3.5 of Zhan, Jie M. et al. Machine Learning Testing: Survey, Landscapes and Horizons. IEEE Transactions on Software Engineering. 2020.
Main ways to evaluate intelligence, properties of effective intelligence, risks with historical data. - Abstract and Section 1 of Chen, Tsong Yueh, et al. Metamorphic Testing: A Review of Challenges and Opportunities. ACM Comput. Surv.51, 1, Article 4 (January2018). 2018.
Motivation for MT, Introduction to MT. - (Optional reading) Section 2 of . Machine Learning Testing: Survey, Landscapes and Horizons. IEEE Transactions on Software Engineering. 2020.
Additional introduction into the required ML terms.
- Chapter 3 starting from "Asking Simple Questions of Data" (pp. 27 – 33) of Hulten, Geoff. Building Intelligent Systems: A Guide to Machine Learning Engineering. Apress. 2018.
- 25.06.2020 17:00
- Data Quality Assurance (Slides)
Introductory reading material
- Chapter 3 of Hulten, Geoff. Building Intelligent Systems: A Guide to Machine Learning Engineering. Apress. 2018.
- Complete article of Chu, Xu et al. Data Cleaning: Overview and Emerging Challenges. SIGMOD’16. 2016.
- Debugging (Slides)
Introductory reading material
- Complete article of Hall, Patrick and Burt, Andrew. Why you should care about debugging machine learning models. O'Reilly. 12/12/2019.
- Until "GANs, Autoencoders and VAESs" of Nicholson, Chris. A Beginner's Guide to Generative Adversarial Networks (GANs). Pathmind. 2019.
- Abstract and Section 2 of Yousefzadeh, Roozbeh and O’Leary, Dianne P. Interpreting Neural Networks Using Flip Points. Preprint on arXiv. 2019.
- Complete article of W&B. Six Ways to Debug a Machine Learning Model. MC.AI. 21/10/2019.
- Complete article of Chandrasekhar, Govind. Debugging Neural Networks: A Checklist. Semantics3 Blog. 8/10/2016.
- 02.07.2020 17:00 (Outro Slides)
- Data Provenance & Reproducability (Slides)
Introductory reading material
- Definitions in Section 2.1 and Section 3 (excluding 3.1 onwards) of Freire, Juliana and Chirigati, Fernando. Provenance and the Different Flavors of Computational Reproducibility. Bulletin of the IEEE Computer Society Technical Committee on Data Engineering. 2018.
Defintions of Data Provenance and Reproducibility. - Complete article of Barber, Gregory. Artificial Intelligence Confronts a 'Reproducibility' Crisis. WIRED. 16/09/2019.
Introduction to reproducibility and why it is imporant. - Complete article of Raff, Edward. Quantifying Independently Reproducible Machine Learning. The Gradient. 06/02/2020.
How to tackle repoducibility manually. - Abstract and Sections 1 and 2 of Schelter, Sebastion et al. Automatically Tracking Metadata and Provenance of Machine Learning Experiments. Machine Learning Systems Workshop at NIPS 2017. 2017.
How to track Provenance systematically.
- Definitions in Section 2.1 and Section 3 (excluding 3.1 onwards) of Freire, Juliana and Chirigati, Fernando. Provenance and the Different Flavors of Computational Reproducibility. Bulletin of the IEEE Computer Society Technical Committee on Data Engineering. 2018.
- Computational Notebooks (Slides)
Introductory reading material
- Complete article of Perkel, Jeffrey M. Why Jupyter is data scientists’ computational notebook of choice. Nature. 30/10/2018.
- Abstract, Introduction and Related Work of Rule, Adam et al. Exploration and Explanation in Computational Notebooks. Proceedings of the 2018 CHI Conference on Human Factors in Computing Systems. 2018.
- Complete article of Henley, Austin Z. What's wrong with computational notebooks?. Austin Z. Henley. 19/01/2020.
- Complete video of Head, Andrew. Managing Messes in Computational Notebooks . YouTube. 17/03/2019.
- Motivation, Jupyter Notebooks and Use Cases of Ufford, Michelle et al. Beyond Interactive: Notebook Innovation at Netflix. The Netflix Tech Blog. 16/08/2018.
- 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 :)
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.
Please connect before the meeting starts.
Please join using your full name. If you use a nickname or pseudonym, tell the advisors (needed for grading).
Please join with a microphone and a camera: It improves the overall experience in interactive parts.
Please mute your microphone when not speaking.
Interact: ask questions and involve yourself into the discussion.