Efficient Embedded Systems Design and Programming

This online course from Arm Education Media is suitable for introductory and mid-level learners working in Electrical, Electronic and Computer Engineering and Computer Science related subjects. It includes lecture slides, lab videos, lab code with solutions, quizzes and more.

The course covers both fundamentals and practical knowledge. State-of-the-art hardware platforms are harnessed in the labs to support the course’s learning outcomes. These use the industry-standard Keil MDK-Arm tool for application development.

Purchase Course Online
If you are interested in an institutional subscription, contact the Arm Education Media team at edumedia@arm.com

Course aims

The course aims to help learners develop their capability of designing and programming Arm-based embedded systems and implementing them in low-level hardware using standard C and assembly language. 

Learning outcomes

Knowledge and understanding of

  • Arm processor architectures
  • Arm-based microcontrollers as modern embedded computing platforms
  • Software design basics, software engineering principles


  • Ability to choose between different programming techniques for embedded system design
  • Ability to evaluate implementation results (e.g. speed, cost, power) and correlate them with the corresponding programming techniques


  • Ability to use commercial tools to develop Arm-based embedded systems
  • Ability to build an Arm-based embedded system and program to satisfy given user specifications


Basic C programming

Course syllabus

Module name
1. Introduction to Embedded Systems Design
2. Software Design Basics
3. The Arm Cortex-M4 Processor Architecture - Part 1
4. The Arm Cortex-M4 Processor Architecture - Part 2
5. C Code as Implemented in Assembly Language
6. Interrupts
7. General Purpose Digital Interfacing
8. Analog Interfacing
9. Timers
10. Serial Communication

The above syllabus is indicative. It might change from time to time.