IT-Universitetet i København
  Tilbage Kursusoversigt
Kursusnavn (dansk):Domain Specific Languages, MSc 
Kursusnavn (engelsk):Domain Specific Languages, MSc 
Semester:Forår 2019 
Udbydes, softwareudvikling og -teknologi (sdt) 
Omfang i ECTS:7,50 
Min. antal deltagere:
Forventet antal deltagere:
Maks. antal deltagere:
Formelle forudsætninger:You are a confident software developer, knowledgeable in programming language paradigms and concepts, able to work with (moderately) complex development projects yourself. These abilities can normally be obtained by following a bachelor programme in software development. Concretely:
- Object-oriented programming: classes, encapsulation, inheritance, polymorphism, interfaces, exceptions.
- Functional programming: anonymous functions, higher order functions, generic types and higher kinded types.
- Scala and Java
- Basic data structures, lists, trees and graphs; basic complexity, algorithms, including dynamic programming
- Programming language concepts, and implementation techniques: grammars, abstract and concrete syntax, parsing, interpretation and compilation (typically taught in a compiler course, for instance Programming Language Concepts and Implementation)
- Software engineering processes, quality assurance, unit testing, property testing
- Modeling and data: UML class diagrams, XML, the relational data model, SQL Moreover the student must always meet the admission requirements of the IT University. 
Læringsmål:The goal is to develop a mindset of working with software automaticaly, like in a production process, as opposed to a hand crafting process, in order to effciently implement correct software. After the course you should be able to:
- Perform domain analysis of a problem domain, obtain a meta-model expressed as a class diagram or an algebraic data type.
- Design and implement external domain specific languages
- Design and implement internal domain specific languages
- Define semantics of simple operational and structural languages
- Describe and discuss the main techniques used for domain modeling and implementation (domain specific languages, modelling frameworks, transformation languages, code generators, concrete syntax and models, type checkers)
- Manipulate abstract syntax representations programatically
- Design and improve concrete textual syntax for modeling language, including writing and refactoring context free grammars, eliminating left-recursion, etc.
- Implement declarative constraints and type rules for domain specific languages.
- Implement declarative and imperative transformations, code generators and interpreters, in various scenarios such as from text to models, from models to text, involving XML, database, etc.
- Test implementations of modeling languages
- Characterize, classify and compare programming and modeling languages along a host of properties. 
Fagligt indhold:The goals of this course are achieved by introducing modeling languages and models as first class artifacts that are designed, manipulated, transformed and translated to code in an automatic fashion.
Subjects will include
- Domain-modeling, feature modeling, meta-modeling and design of domain specific languages
- Concrete Syntax, and concrete syntax editors
- Parsing with parser combinators
- Architecture modeling, product line architectures, variability modeling
- Structural constraints
- Model Transformation and code generation
- Implementation of external domain-specific languages using generic tools
- Implementation of internal domain-specific languages
- Defining and implementing static semantics (type checking) and dynamic semantics (operational semantics) All programing is performed in Scala, to enable common discussion, supervision and shared learning process, however the ideas can be realized in many programming languages. 
Læringsaktiviteter:14 ugers undervisning bestående af forelæsninger og øvelser

14 week semester containing approximately 24 hours of lectures, 20 hours of exercises and project supervision.

The exercises aim at mastering the basics of domain modeling, syntax definition and language implementations in small tasks. You will use Scala and several language design tools from the Eclipse ecosystem in this phase. Most of the learning happens in a project implemented in a 4-person team. In the project you are training (almost) all intended skills in a process of designing and implementing a modeling language of your choice. You decide which tools and design are appropriate for the task and you account for the design decisions in the project report.

You are expected to meet for the supervision meetings during the project.

A substantial part of course (ca. 40%) consists of a project in which you build your own language.

All the tools used in the course are free for you to use, so we expect you to work on your own computer.

To address the needs of the additional ILO for MSc students, additional exercise session and additional lecture will be added on the topic of internal DSLs. Also, the MSc students will have the option to explore this topic in the group project. 

Obligatoriske aktivititer:You need to hand in a project implementation consisting of a simple PDF file summarizing the main created design artifacts and the source code. Your admission to the exam is predicated on the project being approved (pass/fail). The deadline for hand in is December 12. The resubmission deadline is December 20; the second attempt, for those who missed the first deadline or whose project was not approved.

NB: The student will receive the grade NA (not attended) at the ordinary exam, if the mandatory activities are not approved and the student will use an exam attempt. 
Eksamensform og -beskrivelse:D2G Aflevering med mundtlig eksamen der supplerer projekt. Delt ansvar for projekt., (7-scale, external exam)

Oral defense, 30 minutes per student with no preparation time.

A substantial part of course (ca.40%) consists of a project in which you build your own language.

Type of group exam: Mixed exam 2.  

Følgende personer underviser på kurset:
NavnStillingUndervisertypeIndsats (%)
Andrzej Wasowski Professor(ITU) Kursusansvarlig 100