Embedded Software Engineering Course, Winter 2011/2012

Prof. Kirsch, Department of Computer Sciences, University of Salzburg

Time, Location: Tue 10-12 in T03 and Th 3-4 in T02. First lecture on Tue, Oct 4, 10-12. Check schedule (iCal) for updates.

Brief Overview:

This course provides an introduction to advanced systems software engineering: the first part covers advanced operating-system-level aspects in scheduling, memory management, and communication; the second part focuses on higher-level aspects such as real-time programming languages, coordination languages, models for real-time and embedded systems and methods for their verification. The course begins with an introduction to advanced operating system concepts using Salzburg's Tiptoe system as example. Basic real-time scheduling techniques such as rate-monotonic (RMS) and earliest deadline first (EDF) scheduling will be illustrated, followed by more advanced techniques such as Salzburg's variable-bandwidth servers (VBS). Memory management will be discussed from basic concepts to more advanced techniques such as Salzburg's Short-term Memory and Compact-fit systems. Next are real-time communication protocols such as the time-triggered protocol (TTP) and the event-triggered CAN protocol. The second half of the course emphasizes real-time programming, coordination, and verification for real-time and embedded systems. The high-level embedded programming and coordination languages Lustre, Giotto, and Salzburg's HTL will be presented. Code generation for HTL will be discussed based on a virtual machine architecture called the Embedded Machine. The end of the course will focus on more formal aspects of real-time and embedded systems, in particular, timed automata and other formalisms for modeling timed systems, and an overview of methods for their verification.

Goal of the course:

Learn how to design, implement, and evaluate systems software. Understand advanced communication protocols, programming paradigms, and runtime platforms. Implement applications with real-time requirements and verify their correctness.


  • There will be one exam (written test) on Thursday, January 26, 2012 at 3pm.
  • Teams of 2-3 students will develop and implement embedded software projects, e.g., on Motes or Gumstix, present and give demos of their projects on Tuesday, January 24, 2012 at 10am, and write project reports that could eventually result in publications. Each team creates a wiki page that describes the project.


Recommended Textbooks:

  • Hard Real-Time Computing Systems: Predictable Scheduling Algorithms & Applications by Giorgio C. Buttazzo. Kluwer, 1997.
  • Real-Time Systems: Design Principles for Distributed Embedded Applications by Hermann Kopetz. Kluwer, 1997.
  • Reactive Systems: Modelling, Specification and Verification by Luca Aceto, Anna Ingolsfdottir, Kim G. Larsen and Jiri Srba. Cambridge University Press, 2007.

Grading: 25% exam, 75% project.

Prerequisites: programming experience, basic knowledge of operating system and programming language concepts.

Course language: English.

Technical contact: Ana . Sokolova @ cs . uni-salzburg . at
Administrative contact: Adriana . Pratter @ cs . uni-salzburg . at