04-633   Embedded Systems Development

Location: Africa

Units: 12

Semester Offered: Spring

Course discipline


Course description

This hands-on course provides a basic understanding of embedded systems development (embedded processor architectures, programming, and design); models of computation for embedded systems; modeling, specification, synthesis, and verification; hardware/software implementation; performance analysis and optimization; and project design methodologies and associated tools.

Learning objectives

Students will learn about different chips such as PIC and Arduino. Assembly, C programming and Arduino programming will be studied, and some industrial applications will be realized. Students can expect to learn how to program with the embedded architecture that is ubiquitous in smartphones, portable gaming devices, robots, etc. Through a series of laboratory exercises with state-of-the-art embedded microcontrollers, sensors, and actuators, students will acquire skills in the design and implementation of core embedded systems.


After completing this course, students will be able to:

  • Understand the principles of micro-computers and embedded programming
  • Understand hardware and software for embedded microcontrollers
  • Understand the interaction of key devices (buses, memory architectures, memory management, device drivers)
  • Use simulating tools for designing and developing embedded systems
  • Plan installation and maintenance of embedded systems
  • Prepare reports and technical reviews for embedded software development reviews
  • Carry on independent investigation on embedded systems of their failure
  • Demonstrate problem-solving using embedded programs

Content details

  • Microcontroller Overview
  • Microcontroller Architecture
  • Microcontroller functional components: Memories, parallel ports, power supply (low power computing), and clock oscillator
  • Assembly language and C programming
  • Interrupts, counters, and timers
  • ES communications Protocols
  • Data Acquisition and manipulation
  • Arduino programming
  • Fault-tolerant embedded systems
  • Wireless communication in embedded systems


Emmanuel Ndashimye