The book has been developed based on courses on model-driven software engineering (MDSE) and DSLs held by the authors. It aims at senior undergraduate and junior graduate students in computer science or software engineering. Since it includes examples and lessons from industrial and open-source projects, as well as from industrial research, practitioners will also find it a useful reference. The numerous examples include code in Scala 3, ATL, Alloy, C#, F#, Groovy, Java, JavaScript, Kotlin, OCL, Python, QVT, Ruby, and Xtend. The book contains as many as 277 exercises. The associated code repository facilitates learning and using the examples in a course.