IT-Universitetet i København
  Tilbage Kursusoversigt
Kursusnavn (dansk):Domain Specific Languages, SEN 
Kursusnavn (engelsk):Domain Specific Languages, SEN 
Semester:Efterår 2017 
Udbydes under:Master i it, Software Engineering (sen) 
Omfang i ECTS:7,50 
Min. antal deltagere:15 
Forventet antal deltagere:
Maks. antal deltagere:40 
Formelle forudsætninger:Please note! Changes to all parts of this course description may happen until week 36.

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 program in software development.
- You efficiently use object oriented programming constructs and concepts such as classes, encapsulation, inheritance, polymorphism, interfaces, exceptions. You can independently use existing libraries and code implemented by others, following available documentation. You can program in Scala and in Java. (Scala is taught in the Advanced Programming course at ITU)
- You use functional programming, in particular anonymous functions, higher order functions, generic types and higher kinded types.
- You can manipulate standard data structures such as lists, trees and graphs. You have basic working knowledge of complexity and algorithms, including dynamic programming
- You know basic programming language concepts, and implementation techniques (grammars, abstract and concrete syntax, parsing, interpretation and compilation). This can be gained following a compiler course, for instance Programming Language Concepts and Implementation at ITU)
- You know the basic of software engineering processes and quality assurance, for instance having followed an introductory software engineering course (this can be gained following the course Software Engineering and Software Quality); This includes implementing and executing unit test and property tests.
- You know basic UML class diagrams notation, some basics of XML technology, the relational data model and the SQL query language
- You are comfortable using Eclipse (or a similarly mature tool, for instance IntelliJ) as your development environment
Moreover the student must always meet the admission requirements of the IT University.

Note: MSEN students who have not followed Advanced Programming, typically do not fulfill the prerequisites. Please take Advanced Programming first as an elective, or apply for an exemption to take Advanced Programming instead of this course. 
Læringsmål:The goal of this course is to give you a mindset of working with software in an abstract and semi-automated fashion, as in a production process (as opposed to a hand crafting process).
After this course you should be able to:
- Perform domain analysis of a problem domain, obtaining a meta-model expressed as a class diagram (this is a reinforcement of your object-oriented modeling skills in languages like class diagrams)
- Design and implement external domain specific languages
- Describe the main techniques used for domain modeling and implementation (domain specific languages, modelling frameworks, transformation languages, code generators, concrete syntax and models)
- Manipulate abstract syntax representations programmatically (and discuss them, for instance object diagrams)
- Design and improve concrete textual syntax for modeling languages. This includes writing and refactoring context free grammars, eliminating left-recursion, etc.
- Implement declarative constraints and type rules for domain specific languages.
- Implement declarative and imperative model transformations, code generators and interpreters, in various scenarios such as from text to models, from models to text, involving XML, database, etc.
- Implement modeling languages efficiently using model-driven development tools (Xtext framework).
- Test implementations of modeling languages
- Use complex industrial-strength frameworks (by having experienced work with, for example, OSGi, EMF, GMF, XText and other components of the Eclipse platform)
- Compare and contrast related data representation technologies: meta-modeling stack of OMG, XML technologies of W3C, Database modeling and representation technologies, grammar based language representation technologies.
- 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-modelling and design of domain specific languages
- Concrete Syntax, and concrete syntax editors
- Architecture modelling, product line architectures, variability modeling
- Structural constraints
- Model Transformation and code generation
- Implementation of external domain-specific languages using generic tools
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.
The project part of the course accounts for about 40% of the workload.
All the tools used in the course are free for you to use, so we expect you to work on your own computer.

Prior experience shows that the MSEN students need more time to address the learning tasks of the first two weeks, as they luck prerequisites (or simply forgot them due to a long time that passed from their bachelor education). This material is studied fast as this is mostly a repetition of the material for MSc students.

The MSc students will be learning about internal DSLs early in the course. This will create a week-long break in the course for the MSEN students around week 3. This week will be used by MSEN students to revisit (or learn) the missing prerequisite material. 

Obligatoriske aktivititer:You need to hand in a project implementation consisting of a simple PDF file summarizing the main created design 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.

Be aware: The student will receive the grade NA (not approved) 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)

Duration of oral examination: 40 minutes per student with no preparation time.  

Litteratur udover forskningsartikler:Lecture notes distributed by the lecturer.