Team
- Lecture: Prof. Ralf Lämmel
- Lab: Dr. Markus Kaiser and Prof. Ralf Lämmel
Links
- Timeless course portal (Wiki)
- KLIPS: lecture; lab
- Curriculum: Module 04IN2037
- The SLECOURSE project
- An annotated bibliography [.pdf]
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.
-