Welcome to introductory course on domain-specific programming languages!

DSL-COURSE.ORG has been around for several years now. We’d be glad to get feedback on how these materials have been used.

Domain-specific language (DSL) is a programming language specifically designed to working within a particular area of interest. DSLs have been a part of computing for ages, and in recent years they become more popular as a core part of model-driven software development. Using a DSL increases productivity for developers and improves their communication with business experts.
One of the most promising applications of DSLs is a new programming paradigm – called intentional programming – where source code encodes precise intentions that programmers have in mind while creating the code.

The course introduces DSL techniques and discusses approaches on how to implement such languages in practice.
It starts with an overview of domain-specific languages, both text-based and graphical. A trivial “Entities Language” is then discussed and implemented using two special software tools: Eclipse Xtext and JetBrains MPS.

This course is based mainly on the following books:
– M. Fowler, Domain-Specific Languages
– M. Voelter, DSL Engineering: Designing, Implementing and Using Domain-Specific Languages, also available online as donationware
– L. Bettini, Implementing Domain Specific Languages with Xtext and Xtend
– F. Campagne, The MPS Language Workbench, vol. 1

About this course

The course has been developed by Dr. Mikhail Barash at Turku Center for Computer Science (Finland). Mikhail’s interests include language design, compiler construction, grammars, and parsing algorithms. He obtained his Ph.D. degree from University of Turku (Finland) focusing on studying extensions of context-free grammars and their applications to defining syntax of programming languages. You can contact Mikhail via Twitter @mikhail_barash or by e-mail mikhail.barash@utu.fi.

This course has been given by Mikhail Barash at:
Department of Future Technologies, University of Turku (Finland), March-April 2020.
Department of Information Technologies, Åbo Akademi University (Finland), November 2017.
Bergen Language Design Laboratory, University of Bergen (Norway), December 2017, September 2018.
Group on Modeling & Analysis in Software Engineering, Queen’s University (Canada), January 2018.

Book chapter on teaching MPS

Experiences of teaching this course are summarized in a chapter “Teaching MPS: Experiences From Industry and Academia” (by M. Barash, V. Pech) of the book “Domain-Specific Languages in Practice: with JetBrains MPS” (editors: A. Bucchiarone, A. Cicchetti, F. Ciccozzi, A. Pierantonio), to be published by Springer in July 2021.
The book can be now (pre-)ordered: Springer, Amazon.


Reflections on teaching JetBrains MPS
Meta-talk about this course.

A tale about domain-specific languages
First part of the talk is about tools for domain-specific languages (from Microsoft Word to Excel to XML to JetBrains MPS).
Second part is devoted to KernelF, an embeddable and extensible functional language developed by M. Voelter.