Teaching MPS: Experiences from Industry and Academia



In this chapter, we present our experience on teaching MPS to industry professionals and university students. JetBrains has run its commercial courses on MPS both online and on-site for 19 different customers coming from 12 countries over the past 5 years, for some repetitively. The participants typically started the courses with no or little language engineering background and no experience with MPS. Although language design with MPS was the main objective of the courses, some general language engineering topics were also covered, and motivation into the domain was provided. We also report our teaching experience of a course on the implementation of domain-specific languages (DSL), given at universities in Finland, Norway, and Canada. The course, aimed at a broad audience of computer science students, covers DSL design principles and implementation techniques using three text-based language workbenches (Eclipse Xtext, Spoofax, Rascal MPL), prior to introducing MPS. By the time MPS is discussed, students have an understanding of what language implementation comprises of and are somewhat fluent in language engineering terminology. This enabled us to focus on language implementation techniques that are distinctive in MPS. We discuss in this chapter the experience we gained during these courses and the evolution of the educational approach.


Software language engineering JetBrains MPS Computer science education Industry training Educational courses Online education 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Acher, M.: Domain-Specific Languages, course materials. Available at:
  2. 2.
    Bagge, A.H., Lämmel, R., Zaytsev, V.: Reflections on courses for software language engineering. In: MODELS Educators Symposium 2014, pp. 54–63 (2014)Google Scholar
  3. 3.
    Barash, M.: Introductory course on domain-specific programming languages, course materials. 2017–2020. Available at:
  4. 4.
    Barash, M.: A tale about domain-specific languages, blog post (2018). Available at:
  5. 5.
    Benson, V.M., Campagne, F.: Language workbench user interfaces for data analysis, PeerJ 3:e800 (2015)CrossRefGoogle Scholar
  6. 6.
    Berger, T., Voelter, M., Jensen, H.P., Dangprasert, T., Siegmund, J.: Efficiency of projectional editing: a controlled experiment. SIGSOFT FSE 2016, pp. 763–774Google Scholar
  7. 7.
    Bettini, L.: Implementing Domain-Specific Languages with Xtext and Xtend, Packt Publishing (2016)Google Scholar
  8. 8.
    Bettini, L.: Type errors for the IDE with Xtext and Xsemantics. Open Comput. Sci. 9(1), 52–79 (2019)CrossRefGoogle Scholar
  9. 9.
    Cabot, J., Tisi, M.: The MDE diploma: first international postgraduate specialization in model-driven software engineering. CS Education 2011Google Scholar
  10. 10.
    Campagne, F.: The MPS Language Workbench, Vol. 1. CreateSpace Independent Publishing Platform (2014)Google Scholar
  11. 11.
    de Souza Amorim, L.E., Visser, E.: Multi-purpose Syntax Definition with SDF3. SEFM 2020, pp. 1–23Google Scholar
  12. 12.
    Dingel, J.: Beyond Code: An Introduction to Model-Driven Software Development, course materials. Available at:
  13. 13.
    Dmitriev, S.: Language Oriented Programming: The Next Programming Paradigm (2004). Available at:
  14. 14.
    Efftinge, S., Eysholdt, M., Köhnlein, J., Zarnekow, S., von Massow, R., Hasselbring, W., Hanus, M.: Xbase: implementing domain-specific languages for Java, GPCE 2012, pp. 112–121Google Scholar
  15. 15.
    Eysholdt, M., Rupprecht, J.: Migrating a large modeling environment from XML/UML to Xtext/GMF. SPLASH/OOPSLA Companion 2010, pp. 97–104Google Scholar
  16. 16.
    Fowler, M.: Domain-Specific Languages. Addison-Wesley, Boston (2010)Google Scholar
  17. 17.
    Gronback, R.C.: Eclipse Modeling Project – A Domain-Specific Language (DSL) Toolkit. Addison-Wesley, Boston (2009)Google Scholar
  18. 18.
    Grune, D., Jacobs, C.J.H.: Parsing Techniques — A Practical Guide, pp. 1–643. Springer, New York (2008)Google Scholar
  19. 19.
    Kats, L.C.L., Visser, E.: The Spoofax language workbench: rules for declarative specification of languages and IDEs, OOPSLA 2010, pp. 444–463Google Scholar
  20. 20.
    Karsai, G., Krahn, H., Pinkernell, C., Rumpe, B., Schindler, M., Völkel, S.: Design guidelines for domain specific languages. In: Proceedings of the 9th OOPSLA Workshop on Domain-Specific Modeling (2009)Google Scholar
  21. 21.
    Kelly, S., Pohjonen, R.: Worst practices for domain-specific modeling. IEEE Softw. 26(4), 22–29 (2009)CrossRefGoogle Scholar
  22. 22.
    Kelly, S., Tolvanen, J.-P.: Domain-Specific Modeling: Enabling Full Code Generation. Wiley, Hoboken (2008)CrossRefGoogle Scholar
  23. 23.
    Klint, P., van der Storm, T., Vinju, J.J.: Rascal: a domain specific language for source code analysis and manipulation. In: SCAM 2009, pp. 168–177Google Scholar
  24. 24.
    Konat, G., Kats, L.C.L., Wachsmuth, G., Visser, E.: Declarative Name Binding and Scope Rules SLE 2012, pp. 311–331Google Scholar
  25. 25.
    Kulikov, P., Wagner, B., De George, A., Wenzel, M.: nameof expression. C# Programming Language Reference. Available at:
  26. 26.
    Lämmel, R.: Software Languages: Syntax, Semantics, and Metaprogramming. Springer, New York (2018)CrossRefGoogle Scholar
  27. 27.
    Maloney, J., Resnick, M., Rusk, N., Silverman, B., Eastmond, E.: The scratch programming language and environment. ACM Trans. Comput. Educ. 10(4), 16:1–16:15 (2010)Google Scholar
  28. 28.
    Metaborg, Concrete syntax in stratego transformations. Available at:
  29. 29.
    Minör, S.: Interacting with structure-oriented editors. Int. J. Man Mach. Stud. 37(4), 399–418 (1992)CrossRefGoogle Scholar
  30. 30.
    Pech, V.: JetBrains MPS Elementary Course, online course. Available at:
  31. 31.
    Pech, V., Shatalin, A., Voelter, M.: JetBrains MPS as a Tool for Extending Java, PPPJ 2013, pp. 165–168Google Scholar
  32. 32.
    Ratiu, D., Pech, V., Dummann, K.: Experiences with teaching MPS in industry: towards bringing domain-specific languages closer to practitioners. In: MODELS 2017, pp. 83–92Google Scholar
  33. 33.
    Steinberg, D., Budinsky, F., Paternostro, M., Merks, E.: EMF – Eclipse Modeling Framework. Addison-Wesley, Hoboken (2008)Google Scholar
  34. 34.
    Voelter, M.: Fusing Modeling and Programming into Language-Oriented Programming – Our Experiences with MPS, ISoLA 1, pp. 309–339 (2018)Google Scholar
  35. 35.
    Voelter, M.: High-Level Structure of DSLs: Three Patterns (2017). Available at:
  36. 36.
    Voelter, M., Lisson, S.: Supporting Diverse Notations in MPS’ Projectional Editor. GEMOC@MoDELS 2014, pp. 7–16Google Scholar
  37. 37.
    Voelter, M., Benz, S., Dietrich, C., Engelmann, B., Helander, M., Kats, L., Visser, E., Wachsmuth, G.: DSL Engineering: Designing, Implementing and Using Domain-Specific Languages (2013)Google Scholar
  38. 38.
    Voelter, M., Siegmund, J., Berger, T., Kolb, B.: Towards User-Friendly Projectional Editors. SLE 2014, pp. 41–61Google Scholar
  39. 39.
    Voelter, M., Szabó, T., Lisson, S., Kolb, B., Erdweg, S., Berger, Th.: Efficient development of consistent projectional editors using grammar cells. SLE 2016, pp. 28–40Google Scholar
  40. 40.
    Voelter, M., Kolb, B., Szabó, T., Ratiu, D., van Deursen, A.: Lessons learned from developing mbeddr: a case study in language engineering with MPS. Softw. Syst. Model. 18(1), 585–630 (2019)CrossRefGoogle Scholar
  41. 41.
    Wachsmuth, G., Konat, G.D.P., Visser, E.: Language design with the Spoofax language workbench. IEEE Softw. 31(5), 35–43 (2014)CrossRefGoogle Scholar

Copyright information

© The Author(s), under exclusive license to Springer Nature Switzerland AG 2021

Authors and Affiliations

  1. 1.Bergen Language Design LaboratoryUniversity of BergenBergenNorway
  2. 2.JetBrains s.r.o.PrahaCzech Republic

Personalised recommendations