Reading Code: A Computer Science Curriculum
A really excellent description of how computer science/programming *should* be taught, as opposed to how it is. Uses the analogy that you’re learning a new (verbal) language, so it should be taught similarly.