Domain-specific languages

introductory course


Welcome to introductory course on domain-specific programming languages!

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 Åbo Akademi University (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

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