Software Process Engineering:
why it matters
Course themes
- Domain-Driven Design (DDD) and Model-Driven Design (MDD)
- Internal and external DSLs
- Kotlin internal DSLs, Xtext external DSLs
- Version control mastery (with
git)
- Multi-platform programming
- Kotlin multiplatform as reference tool
- Build automation
- Including quality assurance automation
- Including using DSLs to define builds
- Including reproducibility
- Gradle as reference tool, but others are discussed
- Containerisation and orchestration
- Continuous integration and delivery
- With GitHub Actions as reference tool
- Bug hunting and performance engineering
- Proper license selection and versioning

Why it strengthens a software engineering curriculum
- Shows you can design the process, not just code
- You learn to move from domain analysis to running systems using DDD/MDD, supported by DSLs and generators.
- set up and evolve agile pipelines with build, test, CI, and CD.
- You practice build automation, containerization, and orchestration so your code runs reproducibly in teams and production
- Employers value engineers who ship reliably.
- Proves version-control mastery beyond basics, including complex histories and multi-repo work.
- Signals licensing and versioning literacy for open-source and enterprise contexts.
- Adds DDD/MDD and DSL skills that differentiate you for platform, tooling, and architecture roles.
- You build habits of automated quality and delivery.
- reduces repetitive work
- reduces incident risk across any stack
- It converts theory into end-to-end engineering practice (a the gap most graduates need to close):
- domain analysis → DSLs → builds → tests → CI/CD → deploy
Course details
Teachers
Exam
Project, can be shared with other courses: the required techniques are orthogonal to any software system.
Prerequisites
- Java or C# knowledge, Scala is a plus
- Basic git knowledge
- Stage management / commit / remote / fetch / pull / push
Schedule