Course "Software Language Engineering" SS 2013

Team

  • Lecture: Prof. Ralf Lämmel
  • Lab: Dr. Markus Kaiser and Prof. Ralf Lämmel

Links

Summary

Software Language Engineering (SLE) is a particular view on Software Engineering (SE), which pays specific attention to the many software languages that are used in software development. These are not just programming languages, but also modeling languages, query and transformation languages, schema languages, and domain-specific languages. Thus, SLE is concerned with design, implementation, testing, deployment, and evolution of software languages as well as language-based software components.

The lecture focuses on fundamental subjects of software language engineering including foundations of related technologies. The lab exercises some technologies and SLE problems in a more hands-on manner. Much emphasis is placed on the assignments as they are designed to equip attendees with operational intelligence in the field.

Lecture

See also here for a description of concepts per lecture. This description will updated towards the end of the lecture.

Date Topic Educational objective Slides
16.04.2013 Introduction Observe SLE in the computer science context (.pdf)
23.04.2013 Grammars and parsing Implement parsers (.pdf)
30.04.2013 Language processing Distinguish forms of processors (.pdf)
07.05.2013 Attribute grammars Implement semantic analysis (.pdf)
14.05.2013 Rewriting & strategies Implement software transformations (.pdf)
28.05.2013 Automated refactoring Discover challenges of refactoring (.pdf)
04.06.2013 Domain-specific languages Implement DSLs by embedding (.pdf)
11.06.2013 Domain-specific language design Master a process for language design (.pdf)
25.06.2013 Grammar-based testing Testing language processors (.pdf)
02.07.2013 Linguistic architecture Transpose software architecture to SLE (.pdf)
09.07.2013 Code generation Implement compiler-like code generators (.pdf)
16.07.2013 Preparation of the oral exam Making a good impression in the exam N/A

Lab

See also here for a description of the labs (as of WS 12/13).

Date Activity
24.04.2013 Implement parsers and interpreters with Rascal
08.05.2013 Implement semantic analyses with JastAdd
08.05.2013 Generate Java bytecode with ASM
15.05.2013 Implement term-rewriting strategies with Rascal
29.05.2013 Presentations Assignment No. 1
05.06.2013 Implement embedded DSLs with Converge
12.06.2013 Implement language extensions with SugarJ
19.06.2013 Implement a refactoring with Spoofax
26.06.2013 Presentations Assignment No. 2
03.07.2013 Supervision of assignment 3
10.07.2013 Test-data generation for language processors
…-26.07.2013 Supervision of assignment 3

Assignments

No. Topic Date of issue Deadline
1 Language processing basics 05.05.2013 28.05.2013
2 DSL implementation 03.06.2013 25.06.2013
3 Linguistic architecture 01.07.2013 +/- 01.08.2013

Exam rules

  • Form of exam: oral
  • Window for exam: 29 July - 1 Oct 2013
  • Structure of exam (30min):
      • 10min: Student presents 2nd assignment.
      • 5min: Q&A
      • 10min: Student presents 3rd assignment.
      • 5min: Q&A
  • Focus of Q&A:
    • Specific scenario, technology, techniques chosen by students
    • General topics:
      • Domain-specific languages
      • Linguistic architecture
      • As much as applicable:
        • Grammars and parsing
        • Grammar-based testing
  • Admission to exam
      • Regular attendance of lecture and lab.
      • Team-based work on all three assignments.
      • Team-based presentations on all three assignments.
      • Delivery of artifacts and presentations in repository.