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.

Learn about support options →


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
Prototype with Raspberry Pi
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
Explore the ARM architecture
Fetch data over HTTP / HTTPS
Parse JSON with ArduinoJson
Use the ESP-IDF framework

Requirements for Participants:

  • Confident PC user
  • Basic level of English (approximate A1/A2 level)
  • Preferably with your own laptop (Windows / Mac, 8 GB RAM, screen size > 13.3"); a laptop can be provided if needed.
  • Learning Outcomes:

    After completing the course, participants will:

  • Understand how popular microcontrollers such as STM32, ESP32, RP2040, and Teensy work
  • Be able to write software for microcontrollers using C/C++
  • Know how to connect sensors and actuators to microcontrollers
  • Use debugging tools, logic analysers, and oscilloscopes
  • Understand the principles of building autonomous devices (robots, drones, IoT)
  • 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
  • Basic concepts of microcontrollers and their applications in robotics and drones.
  • Comparison of STM32, ESP32, RP2040, and Teensy.
  • Fundamentals of electrical circuits and prototyping.
  • Practical skills: simple circuits assembling, working with a multimeter and an oscilloscope.
  • 8 ac/h
    2. Fundamentals of Programming in C
  • Data types, variables, arithmetic
  • Loops, conditions, functions, pointers
  • Working with arrays and strings
  • Practice: writing and debugging simple programs
  • 16 acad. hrs
    3. Fundamentals of C++ for Microcontrollers
  • Classes, objects, encapsulation
  • Inheritance, templates, data structures
  • RAII, memory handling, standard libraries
  • Creating peripheral control libraries
  • 14 acad. hrs
    4. Working with STM32, ESP32, RP2040, Teensy
  • Using STM32CubeIDE, ESP-IDF, Pico SDK, Arduino Core
  • GPIO, timers, PWM, ADC, interrupts, DMA
  • Communication: UART, I2C, SPI, BLE, Wi-Fi
  • Working with sensors and motors, real-world integration
  • 30 acad. hrs
    5. Debugging and Testing Embedded Systems
  • Using ST-Link, J-Link, UART, SWD/JTAG
  • Using logic analysers and oscilloscopes
  • Debugging and troubleshooting techniques
  • Bug tracking and hardware debugging
  • 14 acad. hrs
    6. Final Project
  • Selecting a project: drone, mobile robot, or IoT device
  • Designing circuit and software architecture
  • Integrating sensors, motors, communication, and control
  • Project presentation and defence
  • 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.
    Gamma Intelligence Training Centre
    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.

    View CV