I have seen classes full of disinterested kids learn by:
1. reading algorithm flows 2. following changes in variables for C code 3. drawing their own algorithms 4. implementing those in C.
repeat for a whole semester.
in the end, those who are really interested will pick up tooling and go ahead by themselves.