Traditional software development techniques are not delivering on their promises. Projects are late, defect levels are high. Developers are fleeing engineering for marketing and management. Why? Figuring it all out up front is not working and neither is hacking. Doing the same thing and expecting different results… Oh yeah, we’ll do it right next time. Agile is designed to solve problems of late projects and high defects. Agile development’s roots incorporate the risk management techniques of the iterative development. Concrete software engineering practices support the iterative model and the team work needed to build complex software systems. This class describes the principles and practices of Agile embedded-software development.