Memorization has a role in just about every course. You need to memorize facts to use schemas efficiently. Further, schemas are facts to be remembered. Students should have memorized patterns they can easily bring to mind. Having stored patterns is one of the things that makes experts experts.
Might a pattern course be just copy and paste?
Good point. Let's think it through.
Suppose you watch someone using a PC. They highlight some text in one window, press Ctrl+C, switch to another window, and press Ctrl+V. Based on that one observation alone, can you conclude that there's little mental effort?
You tricky italicizer, you! No, you can't infer there's little effort. It depends on what the person did before and after the copy-paste.
If the person saw a task, did the copy-paste thing, and was done with the task, then, yes, there's little effort.
But if the person was working on a task for an hour, did a copy-paste, changed what they pasted to fit the task, and worked for another hour... well, it wouldn't make sense to say there was no mental effort.
Choosing and instantiating patterns is much of what experts do. That is how they solve problems, to a large extent. Want students to solve problems? Then they'll need to learn patterns, and how to instantiate them.
Using schemas from your brain is cognitive copy-and-paste.
Oooo, great line. Wish I'd come up with it.
Anyway, you do have a point. Just grabbing things from memory is not what I had in mind for a schema-based course. There has to be effortful instantiation, that is, adjusting schemas to match task requirements.
I'm not sure how much truly unstructured problem-solving we can expect from students in a first course. Learning facts, principles, and some patterns is hard enough for a difficult topic, like programming. In a typical one-semester, 15-week course, that is.
The next course is a different story. Now that they have some mental tools, we might help students figure out what to do when they don't know what to do.
Still, having said that, I'd like to see students do at least some means-ends analysis in a first programming course. Perhaps we ask students to work on tasks where it's not immediately clear which patterns should be instantiated. Maybe this would work best at the end of a course, when students' mental toolboxes are taking shape.