Software Design for Embedded Systems

Data is displayed for academic year: 2023./2024.

Laboratory exercises

Course Description

Software modelling. Software design patterns and architectures. Requirement specifications for software development. Software engineering processes. Versioning tools. Real-time systems. The role and structure of the operating system. Introduction to real-time operating systems. Organization and structure of input-output devices. Operating system kernel and multitasking. Interrupts. Context switching and task scheduling models. Synchronization and communication between tasks. Mutual exclusion, semaphores and monitors. Priority inversion and deadlock. Introduction to FreeRTOS operating system. Porting FreeRTOS for the target microcontroller platform. FreeRTOS practical examples. Task scheduling in multiprocessor systems. Virtual memory. Introduction to functional safety. Guidelines for development of real-time software for safety-critical applications. Testing, validation and verification of real-time software and safety-critical applications. Guidelines and standards for software development for the automotive and related industries.

Study Programmes

University graduate
[FER3-HR] Audio Technologies and Electroacoustics - profile
Elective Courses (1. semester) (3. semester)
[FER3-HR] Communication and Space Technologies - profile
Elective Courses (3. semester)
[FER3-HR] Computational Modelling in Engineering - profile
Elective Courses (3. semester)
[FER3-HR] Computer Engineering - profile
Elective Courses (3. semester)
Elective Courses of the Profile (3. semester)
[FER3-HR] Computer Science - profile
Elective Courses (3. semester)
[FER3-HR] Control Systems and Robotics - profile
Elective Courses (3. semester)
[FER3-HR] Data Science - profile
Elective Courses (3. semester)
[FER3-HR] Electrical Power Engineering - profile
Elective Courses (3. semester)
[FER3-HR] Electric Machines, Drives and Automation - profile
Elective Courses (3. semester)
[FER3-HR] Electronic and Computer Engineering - profile
(3. semester)
[FER3-HR] Electronics - profile
Elective Courses (3. semester)
[FER3-HR] Information and Communication Engineering - profile
Elective Courses (3. semester)
[FER3-HR] Network Science - profile
Elective Courses (3. semester)
[FER3-HR] Software Engineering and Information Systems - profile
Elective Course of the profile (3. semester)
Elective Courses (3. semester)
[FER2-HR] Control Engineering and Automation - profile
Specialization Course (3. semester)
[FER2-HR] Electronic and Computer Engineering - profile
Specialization Course (3. semester)

Learning Outcomes

  1. Design architecure for complex software solutions for embedded systems.
  2. Analyze requirements for implementation of complex software solutions for embedded systems.
  3. Use modern methodologies and tools for team-based software development.
  4. Use real-time operating systems for development of solutions with hard real-time requirements.
  5. Modify real-time operating system for target platform.
  6. Use software testing procedures in safety-critical applications.
  7. Apply basic concepts of functional safety.
  8. Identify guidelines and standards for software development for embedded systems in automotive and related industries.

Forms of Teaching


Seminars and workshops


Grading Method

Continuous Assessment Exam
Type Threshold Percent of Grade Threshold Percent of Grade
Laboratory Exercises 50 % 20 % 50 % 20 %
Seminar/Project 50 % 10 % 50 % 10 %
Mid Term Exam: Written 50 % 30 % 0 %
Final Exam: Written 50 % 40 %
Exam: Written 50 % 40 %
Exam: Oral 30 %

Week by Week Schedule

  1. System design principles: levels of abstraction (architectural design and detailed design), separation of concerns, information hiding, coupling and cohesion, re-use of standard structures
  2. Structural and behavioral models of software designs, Principles of secure design and coding
  3. Properties of requirements including consistency, validity, completeness, and feasibility, Evaluation and use of requirements specifications, Basic concepts of formal requirements specification
  4. Team participation in software development, Software quality assurance and the role of measurements
  5. Operating system roles, Computer and operating system components
  6. Device organization, Threads and processes, Kernel
  7. I/O structure, Interrupts
  8. Midterm exam
  9. Thread management and context switching, Synchronization and communication
  10. Mutual-exclusion, Semaphores and monitors
  11. Multiprocessor issues
  12. Segmentation, Paging, Hierarchical organization and virtual memory
  13. Testing fundamentals, Limitations of testing in particular domains, such as parallel or safety-critical systems, Static approaches and dynamic approaches to verification
  14. Validation planning; Documentation for validation, Software quality management and assessment
  15. Final exam


D. E. Simon (1999.), An Embedded Software Primer, Addison Wesley
Q. Li, C. Yao (2003.), Real-Time Concepts for Embedded Systems, CMP Books
R. Barry (2009.), Using the FreeRTOS Real Time Kernel - Standard Edition,
G.C. Buttazzo (2011.), Hard Real-Time Computing Systems, Springer Verlag

For students


ID 222548
  Winter semester
L1 English Level
L1 e-Learning
45 Lectures
2 Seminar
0 Exercises
15 Laboratory exercises
0 Project laboratory

Grading System

90 Excellent
75 Very Good
60 Good
50 Sufficient