Learning C programming language basics for beginner level.
Getting more advanced topics in C language that are more suitable for programming the embedded systems.

Learning the internal peripherals of a micro-controller and how to use it to control different hardware devices.

Enhance your software engineering skills by understanding and applying different methodologies used at the real work.

There is no bug-free software! Learn how to test your code against your
requirements and gain a huge experience on different kinds of testing
techniques.

Linux is getting a huge acceptance nowadays in the embedded industry and one of the main components for many existing products now. Learn the basic knowledge of this huge world.

Writing code is not just some lines of code, but a Layered Architecture divided into modules and layers to help create more stable, maintainable code.
Gain both theoretical and on-hands experience with OS different components with an intro to RTOS concepts and sing FreeRTOS.