COE 306-Introduction to Embedded Systems
Term 191 - Fall 2019


Aiman H. El-Maleh


Office: Building 22, Room 405-7, Phone: 2811

Schedule and Office Hours

Syllabus | Lectures  | Lab  | Course Resources


Catalog Description

Introduction to Embedded Systems, Embedded system design methodologies, Microcontroller Hardware, ARM Processor, Memory and I/O, Interfacing: Parallel and Serial Communication, Pulse Width Modulation, A/D and D/A conversion, Designing robust software for embedded systems, RTOS features.

Prerequisite: COE 301 and COE 203.



Marilyn Wolf, “Computers as Components: Principles of Embedded Computing System Design”, Third Edition, Morgan Kaufmann, 2012.


Course Objectives

The objectives of this course are to introduce students to embedded systems characteristics, microcontrollers functionality, writing embedded software to interface with I/O devices using various standards.


Course Learning Outcomes

After completing the course, students should be able to:

  1. Understand the embedded system design process and some of the related UML models.

  2. Understand the interrupt mechanism, and develop interrupt-driven C programs.

  3. Understand memory systems: cache mapping, virtual memory, and address translation.

  4. Understand various system bus designs and protocols, and peripheral interaction.

  5. Understand and use common peripheral interfaces in embedded systems, such as analog-to-digital (ADC), digital-to-analog (DAC), pulse-width modulation (PWM), and various serial communication protocols, e.g. SPI, I2C, UART.

  6. Implement and use various common software components of embedded systems.

  7. Understand context switching and scheduling of periodic processes in real-time operating systems.

  8. Analyze performance at the CPU, platform, and program levels levels.

  9. Develop ARM-based bare-metal embedded software in C.



  Last Updated: Tuesday January 21, 2020, by Dr. Aiman El-Maleh