The purpose of this repositiry is to provide a hands-on coding experience in  implementing design patterns, and to show how patterns can emerge throughout the  lifecycle of a software project, as requirements change, grow, and become clearer