C++ projects in intermediate software engineering course, focusing on the study of design patterns