Hi Margaret,
I think students ideally would be given options. When learning something, I sometimes feel like moving quickly through material to see 'how the story ends', but other times I want to see a topic applied (or try applying it myself) before moving on. In a self-directed course, students would be given the option to apply material at every step, so they could use their own judgement if they need reinforcement.
Sometimes though when learning a topic I'm just feeling worn out or overwhelmed, so I won't stop to do exercises even when I should. To mitigate this: 1) the material should be easy to browse so students can more easily fill in gaps on subsequent pass throughs 2) the exercises be should easy to start and not too daunting (e.g. the student is provided with mostly working code but just has to fill in a few missing lines). Assume the student is lazy and wants to do the minimal amount of work. There's a time and place for big, difficult exercises, but that's after they do easy stuff. Especially for harder topics, you want the initial exercises to be easy.
Just make sure the concepts/information parts of your material stand on
their own without the tutorial/exercises parts. Tutorials/exercises are
for synthesis and reinforcement.