This document discusses agile software development methods. It covers topics like agile principles, extreme programming practices including test-driven development and pair programming. It also discusses scaling agile methods to larger projects using scrum, with sprints and daily stand-up meetings. Some challenges of applying agile to large, long-term projects with distributed teams are also outlined.