Method
Flexible
Term
WINTER
Units
2.0 QUARTER UNITS
Cost
$740

Skills you will gain

  • Understand key fundamental concepts of embedded firmware programming
  • Set up and use an embedded firmware development environment
  • Design firmware applications that take advantage of the many I2C and SPI sensors available
  • Describe and explain various wireless protocols for IoT devices

Course Description


All embedded systems require firmware to enable their features. In addition to C programming, firmware engineers must understand system and CPU architecture, as well as the IO and memory interface. They must also master techniques to manage limited memory and tasks, and code programs that are suitable for hardware bring-up and application development. In this course you will learn practical, in-depth knowledge and coding exercises for firmware development.

We’ll review embedded system architecture and hardware configurations specifically on the Espressif ESP32 and its CPU core architectures. You will be introduced to C codes, how to enable hardware features, and work with real-time operating systems, task management and interrupts as well as various inter-chip communication interfaces and access to the outside world. We will introduce the wireless functions of these devices.

Most firmware development in industry is done on Linux systems. You should have solid C programming skills and be ready to complete all class projects with GNU tools. You'll gain experience working on several on-hardware projects. This course prepares you for additional embedded software courses covering a wide range of product interests.


Notes:

Students are required to purchase a hardware starter kit, a small board, breadboard, resistors, LED, and wires (estimated $45-$60, not included in the tuition) to do class projects on their laptops. These are available on Amazon or and should be purchased before the first class. For additional sensors or actuators depending on the student's interest, please contact the instructor.

  • Flexible Attend in person or via Zoom at scheduled times.
Schedule
Date
Start Time
End Time
Meeting Type
Location
Wed, 01-21-2026
6:30pm
9:30pm
Flexible
SANTA CLARA / REMOTE
Wed, 01-21-2026
6:30pm
9:30pm
Flexible
SANTA CLARA / REMOTE
Wed, 01-28-2026
6:30pm
9:30pm
Flexible
SANTA CLARA / REMOTE
Wed, 01-28-2026
6:30pm
9:30pm
Flexible
SANTA CLARA / REMOTE
Wed, 02-04-2026
6:30pm
9:30pm
Flexible
SANTA CLARA / REMOTE
Wed, 02-04-2026
6:30pm
9:30pm
Flexible
SANTA CLARA / REMOTE
Wed, 02-11-2026
6:30pm
9:30pm
Flexible
SANTA CLARA / REMOTE
Wed, 02-11-2026
6:30pm
9:30pm
Flexible
SANTA CLARA / REMOTE
Wed, 02-18-2026
6:30pm
9:30pm
Flexible
SANTA CLARA / REMOTE
Wed, 02-18-2026
6:30pm
9:30pm
Flexible
SANTA CLARA / REMOTE
Wed, 02-25-2026
6:30pm
9:30pm
Flexible
SANTA CLARA / REMOTE
Wed, 02-25-2026
6:30pm
9:30pm
Flexible
SANTA CLARA / REMOTE
Wed, 03-04-2026
6:30pm
9:30pm
Flexible
SANTA CLARA / REMOTE
Wed, 03-04-2026
6:30pm
9:30pm
Flexible
SANTA CLARA / REMOTE
Wed, 03-11-2026
6:30pm
9:30pm
Flexible
SANTA CLARA / REMOTE
Wed, 03-11-2026
6:30pm
9:30pm
Flexible
SANTA CLARA / REMOTE
 

黑料不打烊

This class meets simultaneously in a classroom and remotely via Zoom. Students are expected to attend and participate in the course, either in-person or remotely, during the days and times that are specified on the course schedule. Students attending remotely are also strongly encouraged to have their cameras on to get the most out of the remote learning experience. Students attending the class in-person are expected to bring a laptop to each class meeting.

To see all meeting dates, click "Full Schedule" below.

You will be granted access in Canvas to your course site and course materials approximately 24 hours prior to the published start date of the course.

Demo