A Data-Centric Introduction to Computing
dcic-world.org
dcic-world.org
The authors build their own teaching language to accompany the book, called pyret [1]
A cool feature of which is you can have tests as part of your function definition.
Presumably most people learning to code are doing so in the hopes of gainful employment at some point, so it’s handy to learn a language you can put on your resume to maybe get a job.
I'm not saying the other way can't work though, I've just experienced that this is easier.
Edit: generally, i would love for any text based or even MOOC based courses to lay, out at the end, where does said student do after finishing the course i.e. what courses the could potentially take.