Agile development is the ability to develop software quickly, in the face of rapidly changing requirements. By following agile principles and practices, a software development team is encouraged to evolve into a self-organizing and cross-functional group, thus improving the quality of the code, the quality of deliveries and in the end the customer satisfaction. In general, agile concepts promote adaptive planning, evolutionary development and delivery, a time-boxed iterative approach, and encourage rapid and flexible response to change. Design principles described during the course will help to keep the software flexible and maintainable, while design patterns will represent some practical tools…