The course that I think are effective is what I have labeled as 'concept based training'. These, instead of presenting steps that the student must take, step by step, it merely presents concepts that students need to understand. It does NOT connect the dots for them.
Visually, a very simple concept based training looks like this:
Note that grey circles represent concepts. Blue circles represent assignments. Y axis represents difficulty level. Note that similar concepts are clustered together also and after students were taught the first four concepts, they were asked to do an assignment where STUDENTS HAD TO CONNECT THE DOT THEMSELVES. We didn't connect the dot for them. The students by learning how to connect the dot themselves, they are really internalizing the concepts. In this course above, after the student has done an assignment, they are taught two additional concepts after which there is another assignment where the students are connecting the dot themselves. Note that the instructor never had to tell the student which dots they needed to connect and what sequence. This was all left to the students and the goal was to get the students sufficiently leveled up so that they can connect increasing number of dots themselves. This results in students being self sufficient and where they can create anything they can think of. It also builds confidence as students develop the mindset that they CAN indeed create things they were never really taught how to build directly.Next