Official course description:

Full info last published 5/12-22
Course info
Language:
English
ECTS points:
7.5
Course code:
KSMOSYL1KU
Participants max:
30
Offered to guest students:
yes
Offered to exchange students:
yes
Offered as a single subject:
yes
Price for EU/EEA citizens (Single Subject):
10625 DKK
Programme
Level:
MSc. Master
Programme:
MSc in Computer Science
Staff
Course manager
Assistant Professor
Teacher
Assistant Professor
Teacher
PhD student
Course semester
Semester
Forår 2023
Start
30 January 2023
End
25 August 2023
Exam
Exam type
ordinær
Internal/External
ekstern censur
Grade Scale
7-trinsskala
Exam Language
GB
Abstract
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).
Description

This is the first course of the Software Analysis specialization and it focuses on constructive skills: you learn to design, evaluate, and implement new languages that meet the needs of your projects. You use them to describe systems concisely and with less errors. 

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 domain-specific languages 

All programming is performed in Java or Xtend to enable common discussion, joint supervision and a shared learning process. However, the ideas can be realized in many programming languages.

Formal prerequisites
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. 

Object-oriented programming
  • Classes and Interfaces
  • Encapsulation
  • Inheritance
  • Polymorphism
  • Generic Types
  • Exceptions
Java
  • Basic data structures
  • Lists, Trees and Graphs
  • Basic complexity
Software engineering
  • Development Processes
  • Quality Assurance
  • Modeling (e.g., UML Class Diagrams)
Intended learning outcomes

After the course, the student should be able to:

  • Perform domain analysis of a problem domain to obtain a meta-model
  • Design and implement a domain specific language
  • 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 a modeling language.
  • Implement declarative constraints and type rules for domain specific languages.
  • Implement declarative and imperative transformations, code generators and interpreters
  • Characterize, classify and compare programming and modeling languages.
Mandatory activities

A substantial part of the course (ca. 30%) consists of a project in which you build your own language. The project must be completed and submitted as a prerequisite for the exam.

The pedagogical function of the mandatory project is to provide the students with a learning activity where they design and implement a domain-specific language in accordance with the course’s ILOs.

Throughout the project phase, students will receive formative feedback from the teacher/TA in (approximately) weekly consultation meetings.

If the students fail to hand in/fail to pass the mandatory activity they will be given a chance for a second attempt approximately a week later.

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.

Course literature

The course literature is published in the course page in LearnIT.

Student Activity Budget
Estimated distribution of learning activities for the typical student
  • Preparation for lectures and exercises: 10%
  • Lectures: 20%
  • Exercises: 15%
  • Assignments: 5%
  • Project work, supervision included: 30%
  • Exam with preparation: 20%
Ordinary exam
Exam type:
D: Submission of written work with following oral, External (7-point scale)
Exam variation:
D2G: Submission for groups with following oral exam supplemented by the submission. Shared responsibility for the report.
Exam submission description:
A substantial part of course (ca.40%) consists of a project in which you build your own language.
Group submission:
Group
  • Group size: 3-4 students.
Exam duration per student for the oral exam:
30 minutes
Group exam form:
Mixed exam 2 : Joint student presentation followed by an individual dialogue. The group makes their presentations together and afterwards the students participate in the dialogue individually while the rest of the group is outside the room.


reexam
Exam type:
D: Submission of written work with following oral, External (7-point scale)
Exam variation:
D2G: Submission for groups with following oral exam supplemented by the submission. Shared responsibility for the report.
Group submission:
Group
  • Group size: 3-4 students.
Exam duration per student for the oral exam:
30 minutes
Group exam form:
Mixed exam 2 : Joint student presentation followed by an individual dialogue. The group makes their presentations together and afterwards the students participate in the dialogue individually while the rest of the group is outside the room.

Time and date