Practical Software Engineering for Machine Learning Applications
Leading the next generation of AI-driven enterprises.
- Next Training: To be announced
- Duration: To be announced
- Price: To be announced
- Languages: English (German available upon request)
- Location: Online (Onsite available upon request)
Details
The software being developed in machine learning contexts often remains at fairly low levels of abstraction and fails to satisfy well-established standards in software design and software engineering. One could argue that development environments such as Jupyter even actively encourage unstructured design. This course takes that as a starting point to demonstrate the potential of overcoming the limitations of the typical procedural paradigms that are ubiquitous in machine learning applications.
We use a series of practical examples to highlight the immense value of good design. The goal is to show how a principled software design approach supports every aspect of a machine learning project, accelerating both development and experimentation. Contrary to the common misconception that good design slows down development, we demonstrate that the opposite is true.
Participants will see firsthand the limitations of (unstructured) procedural code and learn how principled design approaches can drastically increase development speed while simultaneously improving the quality of the code along multiple dimensions. The course advocates for object-oriented design principles, which naturally encourage modularity and map well to real-world concepts in the application domain, whether concrete or abstract.
Our overarching goal is to foster maintainability, efficiency, generality, and reproducibility.
Modules
The Importance of Good Design in Machine Learning Software
Understand why machine learning software often fails to meet professional software engineering standards and learn how structured design can bridge this gap.
Overcoming Low Abstraction in ML Development Environments
Explore why environments like Jupyter encourage unstructured design and discover strategies to avoid this trap.
Procedural vs. Principled Design: A Practical Comparison
Examine the limitations of unstructured, procedural code and compare it to principled design through practical examples.
Object-Oriented Design Principles for Machine Learning
Learn how to apply object-oriented design to create modular and maintainable code that supports every phase of a machine learning project.
Accelerating Development with Structured Code
Understand how structured software design approaches can increase development speed and productivity without sacrificing quality.
Fostering Maintainability, Efficiency, and Reproducibility
Implement best practices that promote maintainability, efficiency, generality, and reproducibility in machine learning software engineering.
Meet the trainers
Dr. Dominik Jain
Dominik is a computer scientist with a passion for algorithms, software design and automation in general. As a researcher at Technische Universität München, he gave courses on the topics of artificial intelligence, knowledge representation, statistical relational models and discrete probability theory. After receiving his PhD in artificial intelligence in 2012, he spent the next 11 years working on applied research and development, primarily in the automotive sector. His work leveraged machine learning, probabilistic modelling, combinatorial optimisation, search algorithms, and other methodologies to advance AI-based capabilities across a diverse array of problem domains. In 2023, he joined appliedAI’s TransferLab, working on applications of reinforcement learning and generative AI and developing trainings as well as open-source software for the wider community, before co-founding Oraios AI in September 2024.
Dr. Michael Panchenko
Dr. Dominik Jain
Dominik is a computer scientist with a passion for algorithms,
software design and automation in general. As a researcher at
Technische Universität München, he gave courses on the topics of artificial intelligence, knowledge representation, statistical relational models and discrete probability theory. After receiving
his PhD in artificial intelligence in 2012, he spent the next 11 years
working on applied research and development, primarily in the
automotive sector. His work leveraged machine learning,
probabilistic modelling, combinatorial optimisation, search
algorithms, and other methodologies to advance AI-based
capabilities across a diverse array of problem domains. In 2023,
he joined appliedAI’s TransferLab, working on applications of
reinforcement learning and generative AI and developing trainings as well as open-source software for the wider community, before co-founding Oraios AI in September 2024.