software design course project with appropriate design patterns applied