Basics of embedded software development -- Embedded applications and their requirements -- GCC-based software development tools -- Execution models for embedded systems -- Concurrent programming techniques -- Scheduling algorithms and analysis -- Configuration and usage of open-source protocol stacks -- Device driver development -- Portable software -- The FREERTOS porting layer -- Performance and footprint at the toolchain level -- Example: a MODBUS TCP device -- Advanced topics -- Model checking of distributed and concurrent systems -- model checking: an example -- Memory protection techniques -- Security and dependability aspects.