This document provides an overview of embedded system development. It begins with an introduction to embedded systems, noting their use in devices like cell phones, cameras, and appliances. It then discusses how embedded systems differ from PCs in having specific, predefined functions and more limited resources. Examples are given of embedded applications and considerations for the software development cycle like architecture and guidelines. Specific guidelines discussed include power management, memory usage, user interfaces, and best practices for coding maintainability, reliability, and efficiency. Sample code is also provided and analyzed.