This was the text to my intro CS class in college. It's a really neat approach to introducing a range of students to software design that doesn't leave out more experienced programmers. It can feel like brainwashing at times, but it really helps tear down rotten foundations and build new, stronger ones.