Modern cars, intelligent buildings, complex medical systems, commercial aircraft, etc., are products that contain many parts and have to perform many functions. These products include mechanical, electrical and electronic elements that are controlled by software components interacting with each other and with users. Designing such cyber-physical systems usually requires a team of specialists, consisting of electronic, mechanic, software, and user interface designers. Software engineers are often responsible for integrating these complex systems at the highest level, together with the interaction between these components and their interfaces. A System Design and Engineering (SDE) course, using a Model-Based approach based on models and patterns, can help them manage the complexity of the system and improve the quality of the software components.