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.
Date | Topic | Educational objective | Slides |
---|---|---|---|
23.10.2012 | Introduction | Observe SLE in the computer science context | (.pdf) |
30.10.2012 | Grammars and parsing | Implement parsers | (.pdf) |
06.11.2012 | Language processing | Distinguish forms of processors | (.pdf) |
13.11.2012 | Attribute grammars | Implement semantic analysis | (.pdf) |
20.11.2012 | Rewriting & strategies | Implement software transformations | (.pdf) |
27.11.2012 | Automated refactoring | Discover challenges of refactoring | (.pdf) |
04.12.2012 | Code generation | Implement compiler-like code generators | (.pdf) |
11.12.2012 | Templates and friends | Discover challenges of generative metaprograms | (.pdf) |
18.12.2012 | Grammar-based testing | Testing language processors | (.pdf) |
08.01.2013 | Magnolia: design and implementation | Access to practical experiences | (.pdf) |
15.01.2013 | Domain-specific languages | Implement DSLs by embedding | (.pdf) |
22.01.2013 | Language design and evolution | Master a process for language design | (.pdf) |
29.01.2013 | Linguistic architecture | Transpose software architecture to SLE | (.pdf) |
Lab
See also here for a more detailed description of the labs.
Date | Activity |
---|---|
08.11.2012 | Implement parsers and interpreters with Rascal |
15.11.2012 | Implement semantic analyses with JastAdd |
22.11.2012 | Implement term-rewriting strategies with Rascal |
29.11.2012 | Transform code with Rascal |
06.12.2012 | Presentations Assignment No. 1 |
13.12.2012 | Generate Java bytecode with ASM |
10.01.2013 | Presentations Assignment No. 2 |
17.01.2013 | Implement embedded DSLs with SugarJ |
24.01.2013 | Test language processors with QuickCheck or randoop |
31.01.2013 | Implement a coupled transformation with Rascal |
07.02.2013 | Presentations Assignment No. 3 and Exam preparation |
Assignments
No. | Topic | Date of issue | Deadline |
---|---|---|---|
1 | Implement a program analysis | 15.11.2012 | 05.12.2012 |
2 | Implement a program transformation | 06.12.2012 | 09.01.2012 |
3 | Implement a DSL through embedding | 15.01.2013 | 07.02.2013 |
Exam rules
- Form of exam: oral
- Window for exam: 20 Feb - 30 March 2012
- Structure of exam (30min):
-
- 7min: discussion of an abstract concept chosen by examiner for a lecture chosen by student
- 7min: discussion of a language- or technology-specific concept chosen by examiner for another lecture chosen by student
- 10min: Q&A for an assignment solution chosen by student without much overlap to the previous topics
- 6min: discussion of an assignment improvement
- See here for the abstract as well as language- and technology-specific concepts per lecture.
-
- Admission to exam
-
- Regular attendance of lecture and lab.
- Assemble teams of 1-3 members, subject to approval.
- Each team submits reasonable attempts to all assignments.
- Assignments must be presented in the lab.
-