Pedagogical Pattern #0
Design-Implement-Redesign-Reimplement (DIRR) Pattern
contributed by:
Steve Houk
Santa Barbara City College
Computer Science
721 Cliff Drive
Santa Barbara, CA 93109 USA
shouk@sisko.sbcc.cc.ca.us
NAME:
Design-Implement-Redesign-Reimplement (DIRR) Pattern
INTENT:
Explain new concepts and methods based on old concepts.
MOTIVATION:
It is often hard to get students to make the paradigm shift from functional programming to object oriented programming. The lecture-lab pedagogy provides a "concept" and "use" approach which can prevent the student from separating the "concept" from a specific "use". The DIRR pedagogy provides "relearning" methodology for reinforcing new concepts. In this pedagogy, the students are asked to design and implement programming solutions using their current paradigm. This is followed by a discussion of how the solution can be redesigned using concepts from the new paradigm. Finally, the students will reimplement their solutiona using the new paradigm concepts.
APPLICABILITY:
Use the Design-Implement-Redesign-Reimplement pattern to bridge the gap from an old paradigm to a new paradigm.
STRUCTURE:
Design:
Students are given a programming problem and told to design a solution using their current
familiar design methodology. The problem should contain components that can later be identified as
redesignable in the new paradigm.
Implement:
Students implement a solution to the programming problem using their current familiar coding
methodology.
Redesign:
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.
Reimplement:
The students redo the same programming problem using the new concepts from the new
paradigm.
CONSEQUENCES:
The DIRR pattern:
- Provides students with first hand experience of both the "old way" and "new way" of developing
solutions.
- 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.
- Questions arising from the students will tend to focus on the "why" things are done rather than on
"how" they are done.
IMPLEMENTATION
Issues to consider:
- Double lab time required for each problem. However, second lab period should be shorter since many of the "semantic" issues have been handled by the students in the first lab.
- Redesign discussions should center on how to repartition the problem and not on "good" previous
solution.
- Stronger (ego) students may be frustrated by having to "redo" their first solutions.
- Evaluation should focus on reimplemented solution. However, ignoring first implementation entirely will reduce willingness of students to provide a wholehearted improved solution.
EXAMPLE INSTANCES OF THIS PATTERN:
(Note: Although this "pattern" was conceived as a solution to the procedural-to-OO challenge mentioned above, it is defined in a general way so that it can have other instances -- so that it can be used in other lessons by other instructors (e.g. converting students from one operating system to another, one language to another, one development environment to another, etc.))