I was searching about these theme and i found something that i consider interesting in one article written by T. Grandon Gill and Carolyn F. Holton from University of Florida, USA.
" To address these challenges, the course utilizes a self-paced format. Making the self-paced format work required three systems: 1) Content delivery: extensive multimedia aids and web content to support textual materials and to substitute for classroom lectures, 2) Peer support: peer-tutoring and assignment validation, drawing from approaches used in nuclear submarine training that provide flexibility and enhance rigor, 3) Progress monitoring: an administrative information system, used to track student progress and provide students with weekly reports."
"Confronted with such diversity of background and motivation, there seem to be three generic strategies that an instructor or department might pursue."
"The first involves teaching the course at a fast pace, and accepting the fact that DWF (D-grades, withdrawals and failures) rates will be high—often as high as 50%. The second strategy involves slowing the course to the point where even ill-prepared or unmotivated students can keep up—typically by reducing the amount of material covered. The third approach is to partition the course into cohorts that proceed at different paces, sometimes accomplished by establishing different tracks within a program."
..."the third strategy involves designing a course in such a manner that each student is allowed to proceed at his or her own pace."
"Doing so allows well-prepared students to forge ahead quickly, while students with little or no background can take the time necessary to master the fundamentals. This strategy is the selfpaced approach."
"There does not seem to be any evidence of self-paced approaches built around more traditional approaches to teaching programming, such as the use of lectures and group projects."
Sorry about my english,