> people with prior knowledge, yet disliked by actual students
This is the key!. I was about to say SICP was great then, yeah, I read it only when get interest in build compilers and after 20 years on the craft.
I think you need a progression on material:
1- Start with a highly practical book more alike build little experiments/programs
"Build a pacgam game" "Make a calculator", etc... ie, do a single pass for the minimal amount of info necessary to build a practical yet rewarding project.
2- Now the student have accomplished their first success, slowdown a little and put a small amount of theory here and there, but put focus on:
"Discipline and follow good practices" then re-do the projects right this time.
To build a analytic mindset move to:
3- How a computer think, using debuggers, disassembles, etc.
You get your hands dirty and see the magic behind the magic
And at the final step (is necessary to put some more steps before, just wanna get to the point):
4- Finish with a well round, deep and wide treaty about the field like SICP, so with some practique behind you can actually see what you have done and how it relate to the new info you are getting now.
Also, this will broad your horizons and open the appetite to get in the deep more.
----
I think is to be like how is learn to cook. You start doing simple yet good dishes, without worry to learn first the theory. You move to more challenge, learn techniques tools and tricks of the trade. Finally, move to see the theory behind, round your mental framework and challenge yourself in come with exotic, new dishes...