This course focus on microcontroller programming. Standard programming techniques, software tools and typical microcontroller architectures (for instance ARM) are presented and illustrated by practical examples on real hardware. Through the course students broaden their knowledge about low-level programming skills and gain ability to build and program simple microcontroller systems based on ARM design kits. C is used as primary programming language with short assembler inlines.