A course exploring Classic and Enterprise Software Design Patterns