Modern Embedded Systems Programming (video course)
A free video course by Miro Samek of Quantum Leaps that teaches embedded programming in C by stepping down to the machine level: bits, pointers, GPIO, the startup code, interrupts, an RTOS, state machines and active objects on Arm Cortex-M boards. Unusually deep for a free course.
1.5k
GitHub (course repository) · Sept 2026
Video
Other
Quantum Leaps (Miro Samek)
More than 50 lessons, several months at a steady pace
Intermediate
Free
What the course is
Modern Embedded Systems Programming is a free YouTube course taught by Miro Samek, an embedded software expert and founder of Quantum Leaps, with a companion web page and GitHub repository holding the project downloads. It has been running since 2013 and now has more than 50 lessons. Its approach is unusual: instead of only teaching C, it repeatedly steps down to the machine level so you see how the Arm Cortex-M processor executes your code, how C statements become instructions and how registers change a pin.
The course README lists the topics: binary and hexadecimal, flow of control, variables, arrays and pointers, GPIO, bitwise operations, functions and the call stack, stdint.h integers, structures and CMSIS, startup code and the vector table, the build and linking process, interrupts and race conditions, the superloop, RTOS, object-oriented programming in C, event-driven programming, active objects, state machines, software tracing and assertions.
Is it worth your time?
Yes, if you want to understand firmware rather than only use libraries. The early lessons explain things most courses skip, such as what happens between reset and main, and why a race condition appears when an interrupt shares data with the main loop. Later segments build a simple RTOS to show how context switching works, then explain why event-driven designs with active objects and state machines are often a better architecture for embedded systems. Professional embedded engineers regularly recommend it.
Hardware and tools
The main board is the Texas Instruments TivaC LaunchPad (EK-TM4C123GXL), and the downloads now also include versions for the ST NUCLEO-C031C6 board, an inexpensive STM32 board with an ST-LINK debugger built in. Several early lessons run in a simulator, so you can start before you own a board. The toolchains used are those shown on the course page, such as IAR and Keil; the ideas transfer to any toolchain, including STM32CubeIDE.
Prerequisites and time
The course starts with basics, but the README suggests supplementing it with a general C course. Lessons are short, but the later ones are dense. Expect several months at one or two lessons a week, following along on your own board.
What you can do after it
- Read the disassembly and registers behind your C code and debug at that level.
- Explain startup code, the vector table, interrupts and race conditions clearly.
- Understand how an RTOS switches tasks and when an event-driven design is better.
- Design firmware with state machines and active objects.
Free or paid?
The videos and project downloads are free.
Common questions
Can I follow along with an STM32? Yes. The NUCLEO-C031C6 versions of the projects are provided for later lessons.
Is it too old? The fundamentals do not age, and the course has continued to add lessons and update projects.
Best for: learners who want a deep, machine-level understanding of embedded C on Arm Cortex-M.
Ready to start?
Opens on Quantum Leaps (Miro Samek) in a new tab.
Stuck on something specific?
Writing only gets you so far. If you want an answer to your situation rather than the general case, book a session and we will work through it together. Sessions are free for approved Sefism members, and a few slots open each week.
Follow along
New writing, resources and project ideas land here first.