Electrical Engineering 149 — Introduction to Embedded Systems (4 Units)

Note: EE149 is now EECS149.

Course Overview


EE149 introduces students to the design and analysis of computational systems that interact with physical processes. The main focus is on the modeling of systems that include software components and physical dynamics, but goes over topics such as sensors and actuators, state machines, scheduling, and fault tolerance with seminar style lectures.


Definitely EE16A and EE16B. Other classes that help, but are not necessary for homeworks and the final project are EE120, EEC128, and CS162.

Topics Covered


Course Work

Time Commitment

There are 3 hour labs every week for the approximately the first seven weeks. Most of the work can be finished in lab, but you may invest another 3-8 hours per week on the more difficult labs. After these initial labs, you'll start your large project, which you should expect to spend a hefty amount of time with (think 10-20 hours per week).

There are weekly homeworks in the first 2/3 of the semester that are reasonable in length. Previous iterations of this class required Labview programming which can take time to gain familiarity with the software.

Choosing the Course

When to take

The problem sets and initial labs can be done with very little prior knowledge (at most, EE16A). However, the final project is rather open-ended, so more in depth knowledge of circuits, C programming, and/or filtering may be helpful to your group (EE16B, CS61C, and/or EE120).

What's next?

EECS C106A/B are the undergraduate robotics courses and EE192 is a mechatronics class.

Usefulness for Research or Internships

The final project makes a great discussion topic for: (a) applying theoretical concepts to a physical system (b) working in or managing a team to see a project to completion.

Additional Comments/Tips

The design of embedded systems depends heavily on good modeling between the system and the environment and on ensuring that the system satisfies well-defined specifications in its operating environment. Many embedded systems are deployed in safety-critical applications or require very precise operation (in industries such as avionics, automotive, or medical), which further motivates modeling embedded systems to allow for systematic analysis. With this said, the most important concept in this class is the study of finite state machines, in a synchronous composition, to model the system as a determinate and analyzable process whose behavior can be studied with automated tools and in simulation.

For some of the labs, you program the logic for a microcontroller on a Kobuki robot (like a Roomba) to go up and down a slope, avoiding obstacles, by making use of attached accelerometers, infrared cliff sensors, mechanical bump triggers, and mechanical wheel drop triggers to detect collisions or cliffs. Then you time your Kobuki and compete with your fellow classmates. The other cool aspect was the poster presentation at the end of the semester, where you see what the other groups spent their many hours programming. Past projects have included:

  • 2 Lego NXTs simulating a game of Pacman in a cardboard 6x6 maze
  • 3 iRobots playing Capture the Flag
  • A Lego NXT parallel parking
  • A mechanical arm drawing digits after a camera observes a human making a symbol

Choose a team that has course experience in various fields relating to your project (i.e. one teammate should be good at circuits, another teammate should be a good programmer, etc.).

Last Updated: Summer 2020