Coursera Homework - Pattern Oriented Software