Making Embedded Systems

Learn how to design, implement and deploy production-grade embedded systems
  • Project Based
  • ·
  • Book Centered
  • ·
  • 10 weeks
Picture of Elecia White
Elecia White
Author of Making Embedded Systems
Learn directly from the author
  • 4.6 stars on Amazon
  • 4.3 stars on Goodreads
Cohort
Learn in a structured, classroom environment
No cohorts scheduled. Get notified at launch
or
Solo
Learn solo at your own pace
Trusted by students from
  • pwc.png
  • stanford.png
  • denso.png
  • irobot.svg
  • samsung.svg
  • pwc.png
  • stanford.png
  • denso.png
  • irobot.svg
  • samsung.svg
  • pwc.png
  • stanford.png
  • denso.png
  • irobot.svg
  • samsung.svg
  • pwc.png
  • stanford.png
  • denso.png
  • irobot.svg
  • samsung.svg
 
What you'll learn
  • Design and build real-world embedded systems
  • Develop systems architecture from scratch
  • Enhance and expand the architecture of existing systems
  • Collaborate with interdisciplinary teams to negotiate design trade-offs
  • Integrate testing as a core part of the design process
  • Strengthen your technical interview skills
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.
Picture of Elecia White
Elecia White
Instructors

Teaching Team

Picture of Elecia White
Elecia White
  • Author of Making Embedded Systems (O'Reilly Media)
  • ·
  • Founder of Embedded.fm
Elecia White is the host of the Embedded podcast and author of O’Reilly’s Making Embedded Systems. 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
Syllabus

Course Outline

Week 0 - 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 (Throughput)
    • 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 (IMU)
    • 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 - Conclusion
      Project

      Design and Build an Embedded System That Solves a Problem You Find Interesting

      Project Spec (v1)
      About
      Design and implement an embedded system for a self-selected application that meets minimum production-grade requirements
      Featured Projects
      Student project CalorStudent project Serial SnooperStudent project palLEDStudent project Dodeca Timer
      Audience

      Who's This Course For?

      Electrical engineers who are getting into embedded software and want to know more about good software design

      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 who want to formalize the bits and pieces of knowledge they have gained by already working in embedded systems

      College students and jr 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

      Best suited for C/C++ programmers with intermediate to expert level
      Teaching Methods

      How You'll Learn

      Project-Based
      Learn from a concrete project with real-world constraints
      Solo
      Applied in
      • Cohort
      • Solo
      Book-Centered
      Course modules expands on Making Embedded Systems: Design Patterns for Great Software chapters and require weekly readings from the book
      Applied in
      • Cohort
      • Solo
      Flipped Learning
      Students review the core materials independently during the week, then join a 1-hour live session with instructors and peers for active engagement
      Applied in
      • Cohort
      Testimonials

      What Our Students Have to Say

      Jesse Rhew
      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
      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
      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
      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
      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.
      Learning Dynamics

      Learn Your Way

      SoloCohort
      $149
      $999
      Dynamics

      Self-Paced

      Learn independently, on your own schedule

      Instructor-Paced

      Learn in a structured classroom environment, with peers and instructors
      Class Materials
      Lifetime Access
      LMS Features

      Basic

      Basic

      • Shared Resources
      • Comments
      • Reading Highlights
      • Assignment Solutions
      Live Sessions
      Physical Book & Materials
      Certificate
      $200 Completion Bonus
      Project Critique & Demo
      Access to Instructors
      Community Channels & Shared Resources
      Faq

      Frequently Asked Questions

      • Can my employer cover the program cost?
      • Can I get a full refund if I’m not satisfied? How do refunds work?
      • How are certificates issued?
      • Will this cohort run again?
      • Do I get lifetime access to course materials?
      • What does book-centered means?
      • What’s the difference between Cohort and Solo formats?
      • What compilers and IDEs you use in this course?
      • Do I need a board to take this class?
      Copyright @ 2026 Classpert. All rights reserved.