design patterns in modern c course