DSL Course in Spr '11

CIS is offering a special topics graduate course that focuses on the design and implementation of domain-specific languages (DSLs), sometimes called "little languages". A DSL is a simple language normally with a syntax and semantics focused on a specific application area, perhaps meant to be used by experts on that application area who are not necessarily expert programmers.

The course will cover both external and internal (embedded) DSLs. An external DSL consists of a language separate from the DSL processor's host language. An internal DSL consists of the restricted usage of the host language itself to create the specialized language syntax and semantics

Domain-specific languages and language-oriented programming have been topics of considerable interest in recent years, both in industrial applications (e.g., Ruby on Rails, JMock) and in academic research. Most software engineers will use DSLs in the future as a part of their work. Many will be called upon to design them. This course seeks to address both needs, with an emphasis on the latter.

The course is being developed and taught by Dr. Conrad Cunningham, who taught a similar course in Spring 2009. For this offering, Cunningham has chosen Martin Fowler's new book Domain-Specific Languages (Addison Wesley, 2011) as the primary textbook. He will use Scala as the primary language for examples. An excellent reference book on Scala is Programming in Scala: A Comprehensive Step-By-Step Guide, Second Edition by Martin Odersky, Lex Spoon, and Bill Venners (Artima, Inc., 2011). The course will also use a number of journal and conference papers and other materials.

Upon successful completion of this course, students:

  1. know and understand the fundamental concepts of domain-specific languages (DSLs)
  2. can analyze a problem and apply the DSL concepts to design a DSL solution, if appropriate to the problem and environment
  3. can implement an external DSL using appropriate language-processing techniques and tools
  4. can implement an internal DSL using appropriate host language features and programming techniques
  5. can evaluate alternative DSL designs and implementations to determine which are more
    appropriate according to selected criteria

Related links include:

  • the previous offering, http://www.cs.olemiss.edu/~hcc/langEngr
  • Scala language, http://www.scala-lang.org