Designing Exercises To Teach Programming Patterns