Use Project Based Learning, not just projects, to teach CS so that students develop important content knowledge while building interesting, self-motivated projects.