Designing embedded real-time computer systems. Types of real-time systems, including foreground/background, non-preemptive multitasking, and priority-based pre-emptive multitasking systems. Soft vs. hard real time systems. Task scheduling algorithms and deterministic behavior. Ask synchronization: semaphores, mailboxes and message queues. Robust memory management schemes. Application and design of a real-time kernel. A project is required.