Course Overview

This class is focused on the principles and practices of modern embedded systems design. In class, we will focus on computer architecture beyond the CPU, fundamentals of the hardware/software interface, techniques for sensing and controlling the physical world, and a few other topics. In lab, we will focus on the ARM Cortex-M3, Actel FPGAs, and other supporting hardware, to learn how to design, build, and program embedded systems. Labs during the first half of the course will focus on essential topics. The second half of the course will focus on the design and implementation of non-trivial, open-ended project involving both hardware and software. The labs and project will require a substantial amount of time -- this is a lab-intensive class with a heavy workload.

We have a number of educational goals when teaching 373. The primary ones are:


You must have taken EECS 270 and EECS 370 to take this course. This also implies you have taken EECS 280. I will assume you are familiar with: (on the hardware side) Boolean algebra, gates, multiplexers, flip-flops, and finite-state machines, (on the computer architecture side) assembly language, pipelining, memory, and caching, and (on the software side) program control structures (if/then/else, while and for loops), functions, procedures, parameter passing, pointer-based data structures, and basic structured programming techniques (information hiding, modular programming, etc.).

General Policies

The honor code is in force on all assignments and exams. See the Engineering Honor Council web page for more details.

  1. All individual assignments (e.g. exams, pre-labs, homework and exams) are to be performed on your own.
  2. All group assignments (e.g., in-lab work, post-labs, group talk) are to be performed only by members of the group. Verbal collaboration between members of different groups is permitted for the purpose of helping classmates to understand concepts essential to the labs or providing one another with insights into the best way to approach the in-lab assignments. However, non-verbal collaboration (e.g. drawing detailed schematics on paper or chalkboard, sharing schematics or code) is forbidden. You may not help debug another group's hardware or software without consent from the lab or course instructor. You are also not allowed to possess, look at, use, or in any way derive advantage from the existence of code, lab reports, or other material prepared in prior years.
  3. Homework solutions will be posted soon after the deadline. Late homework assignments will not receive any credit. To reduce the angst this policy may cause, your lowest homework score for the semester will be dropped.

Lab Policies

  1. Pre-labs are to be done individually. The intent is that both partners walk into the lab comfortable with the material and ready to start the in-lab. Pre-labs are due at the start of the lab session. Pre-labs not turned in within the first 10 minutes of lab will be considered to be a day late. Late pre-labs lose 10% per school day that they are late.
  2. In-lab and post-lab assignments are due in lab the week after the lab is assigned unless otherwise noted. Though your in-lab work must be done before the start of lab, in-lab sign-off sheets are due within an hour of the start of lab (so you have a chance to have your lab instructor sign off on your in-lab assignment). In-lab and post-lab assignments lose 5% for each day that they are late.
  3. Most of the variation in lab grades between different students will be due to late penalties and pre-lab questions because the in-lab is graded almost entirely on a done/not done basis. Staying on top of the labs--even in the face of technical problems, makes a significant difference in your lab score.
  4. You are expected to attend the lab section for which you are registered. If you would like to switch lab sections, but the section you want is full, you must find someone in that lab section to switch with. Once you have agreed on a switch, send email to Matt Smith. All section switches must be completed before the second week of lab.
  5. If there are computers available, you may work in lab during other lab sections. However the lab staff's first priority will be the students who are actually enrolled in that lab. The one exception is that inlab sign-offs will be given reasonable priority.


Each student will be in a 3 person presentation group (there may be one or two 2-person groups). Each group will give a 10-12 minute technical talk in class. Each group will have one graded practice session. The goals of these presentations are to:

  1. Educate students about a wide variety of embedded systems topics
  2. Provide students with the opportunity practice preparing and giving technical talks to their peers


The following gives the approximate grade breakdown for labs and exams.

            Overall breakdown:
            Item                  Weight         
            ======                =========
            Labs (7)               25% 
            Project                27%
            Exams                  34% (17% midterm 1; 17% midterm 2)
            Homework 	           8% 
            Oral presentation      6%