Teaching software engineering design to large diverse cohorts poses many challenges. Many students lacking object oriented programming skills find UML designs difficult, while large class sizes limit opportunities for interaction. The need to consider different design aspects such as reusability, extensibility etc., makes the manual assignment feedback a slow process. Moreover, such feedback is subjective, being a reflection of the individual marker's view about various design aspects. There have been little or no past attempts to provide instant and consistent feedback using constructivist tools as with programming tasks mainly because a good or correct design is difficult to define and verify.
This paper presents the result of our action research to improve student design skills. Our approach combines project-based learning with weekly quizzes, tests and active learning tasks. Quiz questions tagged with underlying concepts and cognitive levels allowed us to identify common misconceptions. Quizzes set at analysis and synthesis levels appear to foster better software design skills. Active learning tools devised helped to correct common misconceptions by providing immediate and holistic feedback. The new teaching approach helped us to improve student retention, satisfaction and performance substantially.