Making Embedded Systems Price: $599
Geometric illustration at the border
Async Edition

Making Embedded Systems

Elecia is the author of the bestselling book: Making Embedded Systems: Design Patterns for Great Software and host of the popular Embedded podcast. She is also a principal embedded software engineer at Logical Elegance, Inc. Elecia will enable you to confidently work as an embedded software engineer.

Watch trailer
Join the waitlist and get notified about the next cohort

Making Embedded Systems

A 10-week program with real-life projects and teamwork


Embarking on the journey of creating embedded systems is like stepping into a world of endless possibilities. If you've ever dreamed of bringing your ideas to life through real consumer applications, then Making Embedded Systems is the all-encompassing, knowledge-packed course that will empower you to do just that, and more.

If you aspire to build a career in the embedded industry, it's essential to go well beyond basic tinkering. While Arduino enjoys popularity among hobbyists, makers, and students, it's not as widely adopted in the industry as the STM32 family of microprocessors. To become a proficient embedded engineer, it's crucial to delve into the inner workings of boards and grasp how each component contributes to the overall system. Real-life projects in the embedded space will present you with various constraints, such as size, cost, computational efficiency or power consumption, which bring forth distinct engineering challenges. You won't always have access to perfect hardware or an unlimited budget, and more often than not, you'll encounter limitations. Learning how to navigate these constraints and understanding their impact on your design and workflow are vital skills for any successful embedded engineer.

Over the course of the 10-week program, we will delve into a comprehensive exploration of all the fundamental aspects of professional embedded systems development. Whether you're a beginner seeking to embark on a career change or transitioning from the Arduino realm, Making Embedded Systems will prove to be an invaluable accelerator on your journey.


Join the waitlist and get notified about the next cohort
Previous Cohort
Cohort Name Class Period Registration Deadline
#4 Green Turtles
Sep 25, 23 - Dec 04, 23 Friday, Sep 29 - 2023 at 02:19 PM UTC
Class is closed to new registrations
  • Cohort Name
    #4 Green Turtles
  • Class Period
    Sep 25, 23 - Dec 04, 23
  • Registration Deadline
    Friday, Sep 29 - 2023 at 02:19 PM UTC
Class is closed to new registrations
Meet Your Peers
Mateus
Dustin
Vida
Rishi
Dananjaya
Brandon
James
corey
Justas
Frank
Elliott
Nick
Jaime
Juliano
Mike
Gavin
Tom
Tom
James
Xin
Anna
Bruce
Ryan
Daniel
Vinicius
Miguel
Vincent
Obi
Vasyl
Felix
Dipak
Ana
George
Enigbe
Dan
Kamenee
Johannes
Anish
Sandeep
Giovanni
Victor
Brian
Julie
Benjamin
Peter
Brent
Siji
Conrad
David
Sila
Max
Dayan
Derrick
Brian
Nick
Demian
Meet Your Peers
  • Jaime
  • Avatar
    Sila
  • Avatar
    Mike
  • Anish
  • Avatar
    Elliott
  • Avatar
    Anna
  • Ryan
  • corey
  • Avatar
    Derrick
  • Vasyl
  • David
  • Conrad
  • Avatar
    Brian
  • Vinicius
  • Avatar
    Dan
  • Avatar
    James
  • Ana
  • Avatar
    Bruce
  • Justas
  • Dananjaya
  • Avatar
    Juliano
  • Avatar
    Daniel
  • Avatar
    Mateus
  • Avatar
    Xin
  • Avatar
    Max
  • Avatar
    Benjamin
  • Tom
  • Johannes
  • Avatar
    Nick
  • Miguel
  • Avatar
    Brandon
  • Siji
  • Avatar
    Vincent
  • Frank
  • Avatar
    Nick
  • James
  • Dipak
  • Avatar
    Tom
  • Avatar
    Felix
  • Avatar
    Demian
  • Avatar
    Obi
  • Giovanni
  • Avatar
    Dustin
  • Avatar
    Brent
  • Sandeep
  • Avatar
    Peter
  • Avatar
    Enigbe
  • Dayan
  • Avatar
    Gavin
  • Avatar
    Rishi
  • Avatar
    Julie
  • Victor
  • Avatar
    George
  • Avatar
    Brian
  • Vida
  • Kamenee
Previous Cohort
Cohort Name Class Period Registration Deadline
#3 Yellow Seahorses
Aug 27, 22 - Nov 05, 22 Saturday, Sep 03 - 2022 at 04:00 PM UTC
Class is closed to new registrations
  • Cohort Name
    #3 Yellow Seahorses
  • Class Period
    Aug 27, 22 - Nov 05, 22
  • Registration Deadline
    Saturday, Sep 03 - 2022 at 04:00 PM UTC
Class is closed to new registrations
Meet Your Peers
Aldo
Colleen
Friedemann
James
SREEDHAR
Elizabeth
Lisi
RAMARIO
Ary
Bee
jnanendra
Can
Charlie
Sarah
Sam
Tyler
George
Davi
Chris
Jason
Ben
Cameron
Aissata
Claudio
Austin
René
Dr
Nikolas
Sandrine
Erik
René
Eric
Jeff
PuruP
Paulo
Kapi
Kayla
Darius
SYED
John
Meet Your Peers
  • Avatar
    Friedemann
  • Avatar
    Paulo
  • Cameron
  • Avatar
    James
  • René
  • Avatar
    Jeff
  • Avatar
    Ben
  • Avatar
    SYED
  • Nikolas
  • Avatar
    Chris
  • Avatar
    Aldo
  • Avatar
    Dr
  • Elizabeth
  • Avatar
    Tyler
  • Avatar
    Eric
  • Avatar
    René
  • Avatar
    Aissata
  • Avatar
    Kayla
  • Avatar
    SREEDHAR
  • Avatar
    Davi
  • Avatar
    Kapi
  • Avatar
    Austin
  • Avatar
    Lisi
  • Sandrine
  • Avatar
    Sam
  • Avatar
    Darius
  • jnanendra
  • Avatar
    John
  • Avatar
    Erik
  • Avatar
    PuruP
  • Avatar
    Jason
  • Avatar
    Sarah
  • Avatar
    Can
  • Charlie
  • Avatar
    George
  • Avatar
    Claudio
  • RAMARIO
  • Avatar
    Ary
  • Colleen
  • Avatar
    Bee

Program Structure

Syllabus

Kickoff
Week 1 - Introduction and System Architecture
  • Identify what makes an embedded system
  • Describe why embedded software is different from other types of software
  • Explain the trajectory of the course
  • Create system diagrams as part of system and software design
  • Architect a system, focusing on modularity and information hiding
  • Decompose an existing system to better follow the flow of code
Week 2 - Getting your Hands on the Hardware
  • Identify the major portions of a digital circuit schematics
  • Analyze schematics to sketch corresponding draw block diagrams
  • Apply datasheet information
  • Evaluate processors and development boards based on varying criteria
  • Recognize the different applications of processor documentation
  • Negotiate problem resolution in an interdisciplinary team
  • Explain the need for testability in hardware and software
  • Identify and implement methods to achieve testability in hardware and software
Week 3 - Inputs, Outputs and Timers
  • Implement a basic embedded system (blinking light)
  • Review, decompose and adapt existing hardware abstraction layers (HAL) code
  • Distinguish components of HAL as different design patterns
  • Understand and solve timer equations
Week 4 - Managing the Flow of Activity
  • Deconstruct and document state machines for existing systems
  • Construct and document a new state machine
  • Explain how interrupts and event handlers work with state machines
  • Describe a small scheduler, define basic RTOS terms
Week 5 - Communicating with Peripherals
  • Group peripherals by type and communication method
  • Compare and contrast different peripheral communication methods: ease of use, speed, resilience to noise, and so on
  • Prepare a buffering system to work with a data-driven system
  • Compute system data throughput requirements
Week 6 - Communicating with Peripherals
  • Describe how an inertial measurement unit (IMU) works at an intuitive level
  • Relate IMU results to a system orientation
Week 7 - Updating Code
  • Analyze how a system's bootloader works
  • Critique firmware update options, identifying potential failure points
  • Describe considerations for a large IoT or distributed system deployments
  • Examine code for common security flaws
Week 8 - Doing More With Less
  • Recognize the main components of a memory map
  • Assess resource utilization on a microprocessor
  • Identify and solve problems with resource limitations, memory errors, and firmware update
Week 9 - Math and Optimizing Algorithms
  • Describe the differences between precision and accuracy
  • Evaluate algorithm efficiency with respect to different resource limitations
  • Measure and compare algorithm efficiency
  • Recognize that the first implementation may only be the most obvious, not the best
Week 10 - Power Consumption
  • Measure and calculate power consumption in different circumstances
  • Articulate how coding choices affect power consumption
  • Evaluate which tools will be useful to reduce power consumption under different conditions
Week 11 - Final Project
Your final project is to design and build a simple system that solves a problem you find interesting. The final project is intended to bring together the course topics in a form that can be shared with prospective employers.
Project Preview

Project

Design and build a system that solves a problem you find interesting

Your final project is to design and build a system that solves a problem you find interesting. The final project is intended to bring together the course topics in a form that can be shared with prospective employers

Check out a few of our students' projects
A thumbnail photo for the Dodeca Timer project

Dodeca Timer

Track time spent during tasks
by Graeme Gets

The idea is to use a Dodecahedron to create a physical way to track time spent during the day - In other words, tracking tasks. Each side of the dodecahedron can be assigned a task such as ‘Email’, ‘Coding’, ‘Lunch’, ’meeting’ etc. As you start or stop a task you simply set the Dodecahedron with the task you are about to do facing up.

Demo Session
A thumbnail photo for the palLED project

palLED

palLED, an LED Palette Designer
by Carrie Sundra

The palLED is a friendly kit that helps you envision color palettes on addressable RGB LEDs, using RYB color wheel theory. The palLED lets you see how color schemes created using RYB theory look on RGB LEDs, and also provides you with the RGB settings for each LED.

A thumbnail photo for the Calor project

Calor

In-Situ Temperature Sensor
by David Slik

Calor is a small re-usable device you can scatter across an area to measure how the temperature changes over time and space. Finally, high-density sensor networks are affordable, quick to deploy, and visualizing beautiful animated heatmaps have never been easier.

Demo Session
A thumbnail photo for the Serial Snooper project

Serial Snooper

Make debugging embedded software easier
by Can Caglar

This project aims to make debugging embedded software easier, by reducing the number of steps required to capture serial logs from a device-under-test. Introducing the Serial Snooper (SS): a lightweight, portable and easy-to-use UART data logger.

Demo Session

What you'll learn

  • Build production embedded systems
  • Professional embedded systems engineering
  • Create a system architecture from an existing system
  • Create a system architecture for a new system
  • Negotiate design trade-offs with other parts of an interdisciplinary team
  • Devise tests as part of the design process
  • Improve your interview skills

Who this course is for

Embedded systems are purpose built for their application. That usually means they are resource constrained: the devices have the minimum features needed to do the job. They still need to be mission critical, reliable, easy to use, cheap, and often low power.

Elecia White

Who this course is for

Target Audience
  • Professional electrical engineers who are getting into embedded software and want to know more about good software design
  • Professional software engineers tasked with bringing up hardware who need to know the differences between embedded software and normal software as well as how to use the tools they aren’t accustomed to
  • Software engineers, hardware engineers, IoT professionals, and programmers who want to formalize the bits and pieces of knowledge they have gained by already working in embedded systems
  • New college graduates and junior engineers who want to go beyond tactical programming into strategic design and implementation
  • Managers who are new to embedded software development and need a big picture view
Prerequisites
  • Programming in C or C++, intermediate or expert.

Your Instructors

Elecia White
Elecia White

Elecia White is the host of the Embedded podcast, author of O’Reilly’s Making Embedded Systems, and principal embedded software engineer at Logical Elegance. Elecia has worked on DNA scanners, inertial measurement units for airplanes and race cars, toys for preschoolers, self-driving cars for off-roading, smart rocks for undersea rivers, and assorted other medical and consumer devices.

At a university course, you might learn to program or put together a microprocessor system to program in assembly. Having that sort of theory is great, but that isn't what I do as an embedded software engineer.
Career Highlights
  • Senior Embedded Systems Engineer at Logical Elegance, Inc.
  • Author of Making Embedded Systems (O'Reilly Media)
  • Shipped dozens of products in varied industries including aerospace, medical, consumer, and automotive. Some have sold tens of millions of units; one product that cost $250k
  • Podcast host, blog editor, and author at Embedded.fm
  • Published patents related to medical equipment, municipal infrastructure, and education; peer-reviewed articles concerning signal processing, inertial systems, feeding mice, oil quality sensing, and intelligent tutoring systems
  • 🏎️ Travelled 180 mph in a racecar while testing hardware
  • 🧝‍♀️ Santa's Elf at LeapFrog, focused on making toys
  • 🏜 Melted my hiking boots in the Mojave desert while testing hardware
Relevant Publications in the Field
Making Embedded Systems: Design Patterns for Great Software
View More
185 ratings
Cobus Van Eeden

This is the best introductory book on embedded systems programming I have ever seen and I have seen a lot of them!

Mike B.

Excellent book on the subject! It’s well-written, has very useful information, and if you are job hunting in this area, even has interview questions…and descriptions of how the author evaluates responses to them, at the end of each chapter. Very interesting view into the mind of a technical manager there!

TheGerb

A different approach from the usual run of hobby-directed microcontroller books for Arduino, Raspberry Pi etc. The writing is clear and engaging for software people engaging with writing code for the microcontroller domain for the first time.

Meet our alumni
Jesse Rhew's photo
Jesse Rhew Making Embedded Systems - Cohort 2

One of the many benefits of this course was learning directly from the author of the book. That was absolutely incredible, Elecia's a genius at this. And the TAs went above and beyond to help us out. Any time I had a question, another student wanted to jump in and help put our heads together and try to figure it out and if we weren't figuring it out, we knew a TA was monitoring the conversation and wanted to jump in and help us out.

And it was really great to be able to talk to people who were just learning the topic and people who were already very advanced at this working in a professional setting and just wanted to take their skills to the next level. So the range of classmates that I was working with really I think benefited the experience.

Debra Ansell's photo
Debra Ansell Making Embedded Systems - Cohort 1

In addition to the lectures, when we had weekly meetings and broke into discussion groups. I learned a lot from the other participants in my cohort, listening to the questions in the discussion groups, reading the questions in the channel.

For me in particular, when I found a topic challenging, it was really helpful that other people would say "Yeah, I find this tough too". That was encouraging. It was a nice learning environment. I learned a lot from the other people. As well as the lectures and the homework.

And I'm really pretty impressed with the progress I made and how much I was able to use material I was learning in building my final project. So all together, those elements of the class provided a really motivating and helpful synergy to tackle what is not an easy topic, but I learned a ton and really enjoy the process, the classmates are great.

Carrie Sundra's photo
Carrie Sundra Making Embedded Systems - Cohort 2

I've never had the opportunity to learn in the context of working for a company, having a project, mentors, a framework. So when I saw Elecia was teaching a class and that there would be a live component to it, I was like "Oh man, this is the perfect opportunity for me to actually learn in a structured environment, from somebody who's been writing embedded software for over 20 years". And there's just really nothing like it, there aren't many classes specifically in embedded software which is really different.

The course was everything that I hoped for, I got to ask all of my obscure questions I have been wondering for a while. We got into compilers, optimization, there was lot of stuff about C syntax, style, conventions that I never knew and it was just this rare opportunity to get to nerd out with a ton of other people to ask all of your software questions that I have been collecting over the years. There's Stack Exchange but you never know who's answering the questions.

Aissata Maiga's photo
Aissata Maiga Making Embedded Systems - Cohort 2

I am working as an embedded software engineer in parallel with my studies. I got interested in embedded systems in 2019 and started side projects. At the exception of this one and only class, my knowledge was never formalised. When I read that Elecia White was giving a class, I asked to join.

I developed many valuable skills, for example visualising data with a logic analyser (it was a big deal for me!). And mostly, navigating libraries of STM32, and their documentation. This is an essential skill that I will need to practice more, but the head start is priceless.

It was extremely valuable to learn directly from El. She is of course very competent but nobody tells you she is fun to hang out with! The atmosphere of the class was very open and everybody was willing to cooperate and help each other out. It is a great community to be with.

I highly recommend this class for anyone in need of structure and formalising knowledge that they picked on their journey, and who want to just hang out with other people to share a passion.

Timon Skerutsch's photo
Timon Skerutsch Making Embedded Systems - Cohort 1

The course, was very, very mixed. There are some people who are just starting out. Some people have been industry professionals for decades. And it was a great thing because there was a lot of exchange between these people and everyone could kind of learn from each other. All in all, I enjoyed it a lot. I learned a lot from the students, I learned a lot from the mentors. And of course, from Elecia.

Frequently Asked Questions

  • Can I get my employer to pay for the program?

    An investment in knowledge always pays the best return for your company. It’s a tiny investment compared to what you could potentially bring in terms of innovation to your workplace.

    Many companies offer reimbursement for courses related to your job. Ask your employer about tuition benefits. Even if there is no specific tuition assistance, many companies allocate money toward professional development. Managers may have money earmarked for industry conferences and many have not considered applying it toward continuing education.

    Approach asking for tuition assistance like you would a formal negotiation. Go into the discussion with clearly outlined and rehearsed messages about what you hope to gain and emphasize how it will benefit your boss and organization.

  • What is the time commitment for this course?

    This course requires 6-8 hours/week of work. Self-paced activities such as homework assignments, readings, and watching video lectures exist to help you build up knowledge until you’re able to demonstrate, through your project, that you’ve achieved the learning outcomes of the program. Although important, homework assignments won’t be graded by the instructional team. The only gradable unit in this program will be your project, which is a prerequisite for certificate emission

  • How do refunds work?

    If the course does not meet your expectations, you can ask for a full refund before the beginning of week 3. No questions asked!

  • How are certificates issued? Will I be evaluated?

    In order to earn a certificate, you’ll need to submit a project and get a passing grade. The instructional team will provide comprehensive feedback on your project, highlighting the strong points, areas for improvement, and helpful tips on how it could be successful outside of the class.

  • Will this course run again in the future?

    Cohort-style classes are to some extent very similar to traditional classroom environments which makes them largely dependent on the instructor’s schedule. While we always hope there’ll be a next cohort, there’s no guarantee that the instructor will be available for the next one. If you’re busy right now, but really interested in taking this course, we advise you to sign up now and ask for a refund if you can’t commit to the program after week 3.

  • What determines the price of the course?

    Our programs require significant time from a number of professionals including mentors, the instructor, and organization staff. It is not a canned lecture course but an educational opportunity tailored to your needs and interests.

  • What compilers and IDEs do you use in the course?

    We use Cortex-M processors and encourage the use of the STM32 CubeMX compiler. That said, any compiler and IDE for those processors can work, including PSoC Creator, IAR, VSCode with GCC, Platformio, and the RPi Pico SDK. While you’ll choose a specific IDE and compiler, you will get exposed to others from your classmates.

  • Do I need a board to take this class?

    You can use emulators or any STM-32 compatible board

Join the waitlist and get notified about the next cohort