The problem should contain components that can later be identified as redesignable in the new paradigm. Students implement a solution to the programming problem using their current familiar coding methodology. After the students have implemented their solutions, the instructor leads a discussion of how the solution can be redesigned and repartitioned using new concepts from the new paradigm. Also presented are programming language features that support the new concepts. The students redo the same programming problem using the new concepts from the new paradigm.
Students gain practical insight into how new concepts relate their pre-established concepts.
Solving a problem more than one way often leads to deeper understanding of the concepts being addressed. Double lab time required for each problem. Evaluation should focus on reimplemented solution. However, ignoring first implementation entirely will reduce willingness of students to provide a wholehearted improved solution.