Skip to Main Content
This paper describes lessons we have learned over the past several years about teaching the design of modern embedded computing systems. An embedded computing system uses microprocessors to implement parts of the functionality of non-general-purpose computers. Early microprocessor-based design courses, based on simple microprocessors, emphasized input and output (I/O). Modern high-performance embedded processors are capable of a great deal of computation in addition to I/O tasks. Taking advantage of this capability requires a knowledge of fundamental concepts in the analysis and design of concurrent computing systems. We believe that next-generation courses in embedded computing should move away from the discussion of components and toward the discussion of analysis and design of systems.