Hardware/Software Codesign
Overall Course Objectives
Students will learn the fundamentals of hardware/software codesign and a theoretical foundation and practical experience with machine learning for embedded devices. An overview of topics in codesign is given. Exercises explore specific topics of co-design and machine learning for embedded devices. The course project allows students to build on the theoretical foundation and perform all steps from training to deployment of a machine learning model on an embedded system.
See course description in Danish
Learning Objectives
- Describe the principles and elements of HW/SW codesign
- Describe the workflow from specification to deployment of machine learning for embedded devices
- Describe the fundamentals of neural network architectures and training for embedded devices
- Compare various software and hardware options for deployment of machine learning models in embedded systems
- Design an embedded system for machine learning applications
- Train and evaluate machine learning models for microcontroller based embedded systems
- Deploy machine learning models on microcontroller based embedded systems
- Analyze trade-offs between different designs using multi-parametric optimization
- Optimize machine learning applications for embedded systems
Course Content
The course gives a high-level introduction to topics in hardware/software codesign and the elements of a codesign process. The theoretical foundations and practical implementation of machine learning models on resource constrained devices (commonly denoted embedded AI) are explored with lectures, hands-on exercises, and project work. Through a series of lectures and hands-on exercises, students are expected to be able to train, evaluate, and deploy a machine learning model to a microcontroller-based system at the end of the course. Methods for exploring trade-offs in pure software vs hardware-accelerated implementations are explored including multi-parametric optimization to account for various metrics including accuracy, inference latency, memory use, and energy consumption.
Possible start times
- 6 – 20 (Thurs 13-17)
Recommended prerequisites
Students are expected to have prior knowledge in Python and C-programming. Microcontroller and machine learning experience is preferable. Knowledge of digital design and computer architecture is also preferable.
Teaching Method
Lectures, exercises and project.




