This document provides an outline for a training course on programming the ARM microprocessor for embedded systems. The outline covers topics such as ARM technology overview, ARM tools and products, the ARM processor, instruction sets, exceptions and interrupts, firmware, caches, and memory management. The goal is to help students develop an understanding of ARM processor execution needed to develop and debug embedded software with or without an operating system.