Current software development practices are suboptimal in that projects both take too long and result in products with insufficient quality. Agile methods are a cohesive set of concepts, principles and practices to address what most consider the banes of software development: poor and changing requirements, short development cycles, long working hours, and burgeoning system complexity. When integrated with a full development process, agile methods can reduce costs and improve quality through the focused application of the key principles. This class introduces those concepts and shows how they can work with model-driven development to improve project results for embedded system development.