Embedded Software Development in C/C++
Course Information
Course Objective: to provide basic theoretical knowledge and practical skills necessary for developing embedded software in C/C++.
The training is conducted in a classroom format, in a practical lab at Tartu mnt. 18, Tallinn. Group size up to 6 people. All study materials are included in the course price. A laptop can be provided for the duration of the course if needed.
Various funding options are available for this course, including government support schemes and non-profit organisation programmes. Get in touch with our consultant for more detailed information.
Target group:
This course is for you if you:
- are an aspiring embedded developer and want to learn professional firmware development in C/C++;
- are a C/C++ developer (desktop) and would like to move into microcontroller development;
- are an electronics or hardware engineer and need to write efficient firmware for your own devices;
- are an automation or industrial control engineer and are interested in developing control software for controllers;
- are a developer in another language and want to add low-level embedded development to your stack;
- are a student of a technical or electronics discipline and would like hands-on skills;
- are looking to enter embedded/IoT and aim to master an in-demand and growing field.
What you'll learn on this course:
Write firmware in C
Program microcontrollers in C++
Develop on STM32
Build connected devices on ESP32
Start in the Arduino IDE
Build projects with PlatformIO
Configure MCUs in STM32CubeIDE
Write code in VS Code
Connect peripherals over I2C / SPI
Flash and debug with ST-Link
Network devices for IoT (Wi-Fi / BLE)
Track code history with Git
Control hardware with PWM
Link devices over ESP-NOW
Drive RGB LEDs with Adafruit NeoPixel
Run firmware on Teensy
Talk to devices over UART
Fetch data over HTTP / HTTPS
Use the ESP-IDF frameworkRequirements for Participants:
Learning Outcomes:
After completing the course, participants will:
Learning Methods:
Total course volume: 180 academic hours, including 100 academic hours in the classroom (42 hours of practical work and 2 seminars totalling 8 hours)
Assessment Criteria:
Learning outcomes are assessed based on independently completed practical work.
Assessment Methods:
Successful completion of practical and homework tasks is marked as "passed".
Course Completion Requirements:
To complete the course and receive a certificate, at least 75% of homework must be completed and passed.
Additional Information:
General rules for organising studies (in Estonian)Rules for ensuring study quality (in Estonian)
Course program
| Module | Main topics | Volume |
| 1. Introduction to Microcontrollers and Electronics |
|
8 ac/h |
| 2. Fundamentals of Programming in C |
|
16 acad. hrs |
| 3. Fundamentals of C++ for Microcontrollers |
|
14 acad. hrs |
| 4. Working with STM32, ESP32, RP2040, Teensy |
|
30 acad. hrs |
| 5. Debugging and Testing Embedded Systems |
|
14 acad. hrs |
| 6. Final Project |
|
16 acad. hrs |
Course Details
Course Schedule:20.07.2026 - 22.09.2026
17.08.2026 - 19.10.2026
07.09.2026 - 09.11.2026
Class Time:
Mon, Wed, Fri 17:45 - 21:00
Apply →We'll reply within 1 business day
Course Duration: 2 months
Format and Location:
Address: Tartu mnt. 18-53, Tallinn.

In-person training at our lab located at Tartu mnt. 18-53, Tallinn. Group size up to 6 people.
Language of Instruction: English
Price: 1967.21 EUR + VAT 24%
Total Course Volume: 180 acad. hrs
Includes:
- Classroom sessions: 100 acad. hrs (including 42 practical hrs and 2 seminars – 8 acad. hrs)
- Independent work: 80 acad. hrs
Instructors
Aleksandr Bobyrev
Qualification: Senior Embedded Software Engineer with over 15 years of experience in embedded software development. Has worked at Stoneridge, HARMAN, Unikie and Symantec, building firmware for automotive electronics (camera monitoring systems, audio amplifiers), diagnostic systems and medical devices.Specialisation: Embedded software development in C/C++, real-time operating systems (RTOS), microcontrollers (ESP32, Raspberry Pi, NXP S32K), automotive standards (AUTOSAR, CAN/LIN, UDS diagnostics), the Qt framework and Python, unit testing (GTest) and CI/CD (Jenkins, Docker, CMake).
Teaching Experience: Taught C/C++ and OOP at Tallinn University of Technology (TalTech) and OOP, design patterns and testing with the Qt framework at Tallinna Tööstushariduskeskus.
Education: Master of Science in IT and Automation, Tallinn University of Technology (TalTech), 2012.