In a nutshell, we knock that CS1 courses have a high number of drop/fail/withdrawals due to several different factors. These include course difficulty, time management skills, and not feeling welcomed in the community (lack of representation, assuming CS students must love video games, etc). I don't focus much in inclusivity (though a number of faculty at NC State do), but I'm looking for methods to reduce difficulty. My thesis stems from methodologies I've used while teaching martial arts - specifically focusing on lower-level "build blocks" practice.
We can represent different learning activities by the amount of "creation" a student must engage in - Passive (watching lectures) require no creation, Active is repeating solution steps, Construction is critiquing steps, and Interactive is a co-creation process between the student and another student, instructor, or system. These form the ICAP framework by Mickie Chi. My arguments are that if a student is struggling with an Interactive exercise, like a traditional coding problem, then they should "downgrade" their practice to something lower level like self-explanation or debugging. However, if THOSE activities are still difficult, we can downgrade to an even lower-level of having them simply repeat (the mindless 'copy the dictionary' activities modern education hates).
My rationale again looks at how technical skills, like martial arts, are learned. Typically we start with warm ups, a brief demonstration on a few movements from the instructor, and then students are asked to pair up and drill the moves. Then the instructor builds on the moves with another demonstration, and then students repeat their process. Eventually, students spar (or apply the technique in a live problem). I argue that traditional coding problems are analogous to live sparring because students need to incorporate writing code, problem solving, debugging, code tracing, etc. If they struggle with some of those skills, they struggle in the activity. Rather than having them learn all the skills "in situ" while coding, maybe lower level deliberate practice targeting a single skill can help strengthen their overall foundation.