Usually I write custom lessons and exercises for each course. You don't have to do that, if you can find a focused, well-written textbook. I haven't been able to find exactly what I want for my courses. I'm picky.
Ideally, course design could use a "waterfall" approach, where you get each step right the first time. Get the task goals right, lock them in place, get the concepts right, lock them in place, etc.
That would be nice, but it never works out in practice. Nobody gets everything right the first time, with something as complex as course design and production. Imperfection and rework does not imply lack of due diligence. It's normal. The software industry took decades to realize that.
More realistically, you'll need to make a course that you can iterate on and improve. That's what agile methods like AGILE and LLAMA are about.
This section explains what I do to make a good SCDM course. Mostly it refers to what we've already talked about, but there are a few more issues I'd like to raise. There are links to design documents for an Excel VBA course, so you can see an implementation.
Start by working out who the students are, what they can do at the start of the course, what they care about, and other course constraints. You can see an example for the Excel VBA course.
Next, work out course goals, starting with target tasks. Here are three tasks I worked out for the Excel VBA course.
Define a transfer range for the tasks, as we talked about earlier. Then list the schemas, procedures, and facts needed to do these tasks. You can see an example of that.
Sequence of lessons
Work backwards from the goals, mapping out prerequisites. For example, one of the patterns needed for the sample tasks is numeric validation. For that pattern, you need to know about If statements. Before Ifs, you need to know about variables and expressions. So the course needs to cover variables, then expressions, and then Ifs, before you can get to validation. If it helps, you can make a spreadsheet, showing what students need to learn first for each pattern.
Once you have the sequence, you can break it up into lessons and modules. This gives you the lesson tree for the course, the first version of it, anyway.
Now you can write the lessons, using didactic explanations, worked examples, reflection questions, and simulations. You can see the final result for the Excel VBA course.
Let's talk about a few issues.
If you're using characters, write brief personas for each one before you start writing lessons. That helps with consistency. For example, before I started writing the lessons for the Excel VBA course, I decided that Georgina would be a bright, excitable geek.
Reduce cognitive load
Learning is hard enough for students, without having to struggle with your writing. Let students keep their brainpower for learning. Use simple writing. Use short sentences. Eschew obfuscation.
Suppose you want to refer to the same image three times in a lesson. You could include it once, label it Figure 1, and write "see Figure 1" a few times.
This makes sense for paper books, but less so on the web. Pixels are cheap. Show the image each time, so people don't have to scroll.
Students will have to learn how to use your course website. The first few lessons might be about that. Students won't remember everything the first time through, however, so you may have to remind them how to use the website as you go.
It helps to make the first few exercises about using the website. For example, the first exercise in my courses is for each student to complete the About me field in their user profiles, so I can get to know them better.