The Software Languages Book

A textbook on software languages authored by Ralf Lämmel.

Title: Software languages

Subtitle: Syntax, semantics, and metaprogramming

Status: Copy editing by Springer

Frontmatter including table of contents: (.pdf)

Sample chapter - The notion of software language: (.pdf)

The book and chapters thereof can be shared with individuals (individuals, lecturers, students, etc.), subject to agreement with a copyright notice (which basically constraints sharing and use after the publication date of the book). If you would like to look at the book, please send an email to ed.znelbok-inu|gnaltfos#ed.znelbok-inu|gnaltfos. The book is still undergoing proof-reading and reviewing. Your feedback is very much welcome. Below also find slides and videos for material in the book.

Copyright for artwork: (C) 2016-17 Wojciech Kwasnik, Daniel Dünker, Matt Sheehy, Archina Void, Ralf Lämmel, Software Languages Team, Faculty of Computer Science, University of Koblenz-Landau. Image licensed under a Creative Commons Attribution 4.0 International License.

   author = "R. L{\"{a}}mmel",
   title = "{Software languages: Syntax, semantics, and metaprogramming}",
   year = "2017",
   publisher = "Springer",
   note = "To appear. Book's website: \url{}"

Slides and videos

Topics from the book are supported by focused and compact presentations with slides an YouTube videos as listed below. The videos are between 10-15mins. Experienced lecturers will be able to use the underlying slides for an extended presentation.

  • Internal DSL style: [PDF]; [YouTube]
  • External DSL style: [PDF]; [YouTube]
  • Program generation with template processing: [PDF]; [YouTube]
  • Tree-based abstract syntax: [PDF]; [YouTube]
  • Basics of interpretation: [PDF]; [YouTube]
  • Big-step operational semantics: [PDF]; [YouTube]
  • Small-step operational semantics: [PDF]; [YouTube]
  • An introduction to type systems: [PDF]; [YouTube]
  • An introduction to denotational semantics: [PDF]; [YouTube]
  • An introduction to the lambda calculus: [PDF]; [YouTube]
  • Short introduction to programming language theory: [PDF]
  • An interpreter for every season: [PDF]
  • Compilation - a primer: [PDF]
  • Parsing - a primer: [PDF]
  • Term rewriting - a primer: [PDF]