Master Course Description for EE-474/CSE-474 (ABET sheet)

Title: Introduction to Embedded Systems

Credits: 4 (4 hours lecture; 1 hour lab)

UW Course Catalog Description

Coordinator: Shwetak Patel, Professor, Computer Science and Engineering / Electrical and Computer Engineering

Goals: To provide a detailed understanding of the specification, design, implementation, and test of the software side of real-time embedded microcomputer systems.

Learning Objectives: At the end of this course, students will be able to:

  1. Understand the embedded systems development cycle and use the tools supporting such development.
  2. Understand the importance of and methods for designing and developing safe, reliable, and fault tolerant embedded systems.
  3. Develop high quality, well annotated, multifile software packages.
  4. Understand and design systems subject to real-time constraints.
  5. Develop drivers for basic analog and digital peripheral devices.
  6. Use debugging tools to verify proper program execution on a dedicated target system.
  7. Test a program executing on a dedicated target system.

Textbook: James K. Peckol, Embedded Systems - A Contemporary Design Tool. John Wiley & Sons, 2008.

Reference Texts:

  1. Development board reference guide(s).
  2. Lawrence H. Miller and Alexander E. Quilici, The Joy of C. John Wiley & Sons, 1997.
  3. Samuel P. Harbison, III, and Guy L. Steele, Jr., C: A Reference Manual, 5th Ed. Prentice-Hall, 2002.

Prerequisites by Topic:

  1. Computer Programming II, CSE-143


  1. Software design and abstraction
  2. Software development life cycle
  3. C programming for embedded systems
  4. Control and control flow
  5. Tasks, control, and scheduling
  6. Inter-task communications
  7. Operating systems basics
  8. Memory management
  9. Basic digital signal processing techniques: digital filters, FFTs
  10. System performance and optimization
  11. Safety, reliability, fault tolerance, and test
  12. System testing
  13. Advanced topics in embedded systems
  14. Note: recitation will be used for a TA-led introduction and support on writing C programs. Recitation is optional, but strongly recommended for students without prior C programming experience.

Course Structure: The class meets for two lectures a week, each consisting of 2-hour meetings. There is a lab recitation to practice programming on the embedded platform and for time to work on assignments. Laboratory work constitutes a significant focus of the class and is organized into projects, typically groups of 3-4 students. There are 4-6 project assignments that build on each other for the final project. There are also two written exams.

Computer Resources: Extensive use of interactive systems for C language program development; use of tools for source level program debug. Embedded development boards are provided and used in the course.

Laboratory Resources: The main electronics laboratory includes benches equipped with oscilloscopes, power supplies, function generators, digital multimeters, test leads, and computers installed with a C integrated development environment. Each team is also assigned an embedded development board for use for the quarter.

Laboratory Structure: The laboratory consists of 4-6 design project assignments that build on each other, culminating in the final project. Examples of labs goals include:

  1. Familiarization with development tools (editor, cross compiler, assembler, linker); introduction to source level program debug.
  2. The design and development of multi-file programs.
  3. Develop drivers for I/O protocol(s).
  4. Modular programming; Interrupts (e.g., Multifunction clock).
  5. A/D and D/A (e.g., Data acquisition and control system).
  6. The use of interrupts and timing (e.g. design and development of a simple real time kernel)

Grading: Course grades are based on laboratory assignments, a final project, and a midterm exam.

ABET Student Outcome Coverage: This course addresses the following outcomes:

H = high relevance, M = medium relevance, L = low relevance to course.

(1) An ability to identify, formulate, and solve complex engineering problems by applying principles of engineering, science, and mathematics (H) The laboratories require the student to assess and analyze the assignment, then apply basic engineering knowledge to either solve the problem or state why (based upon their analysis) they are unable to fully satisfy the requirements.

(2) An ability to apply engineering design to produce solutions that meet specified needs with consideration of public health, safety, and welfare, as well as global, cultural, social, environmental, and economic factors (M) The laboratories assign a particular design problem to be solved. The final project brings all of the concepts together through the development of a (simplified) real world project. Each of the design projects provides a high-level requirements specification and a design specification for the problem that must be solved and each student must think about the broader implications of their designs.  For the final project, the students are given only a set of requirements and they must interpret the requirements and implement the design specification.

(4) An ability to recognize ethical and professional responsibilities in engineering situations and make informed judgments, which must consider the impact of engineering solutions in global, economic, environmental, and societal contexts (M) Ethics and professional behavior are strongly stressed throughout the course. Students will discuss the societal and ethical impacts of developing embedded systems for consumer products, including safety, privacy, security, and reliability. Also considered are issues such as copyrights, national and international patents, licensed material, intellectual property, plagiarism, citing sources for material or idea, and using published algorithms and designs.

(6) An ability to develop and conduct appropriate experimentation, analyze and interpret data, and use engineering judgment to draw conclusions (M) The project assignments routinely require the use of contemporary software engineering tools and techniques. The projects inherently include the collection and interpretation of signals and data from a sensor or a collection of sensors.

Preparer: James K. Peckol, Shwetak Patel, Bruce Hemingway

Last revised: 05/03/2019 by Shwetak Patel