Design and coding of embedded programs. Real-time constraints and management of resources. Practical I/O interfaces and protocols, polling, interrupt maintenance, atomic code, blocking and non-blocking tasks. Static and dynamic task scheduling under real-time and limited resource constraints.
Prerequisites: Upper division standing in Computer Engineering, Computer Science and Electrical Engineering. Familiarity with C, Finite Automata, and Computer Architecture.