Recently I was asked an interesting question: “if a foresighted student asked how to prepare to be a CS teacher, what advice would you give him or her?”
My initial reaction was that I would first ask if they were interested in teaching first and CS as the subject to teach or if their interest was computer science but they didn’t want to work in a traditional CS career (ie. writing code for a living)? In the first case I thought I would recommend an education major and a CS minor. In the second a CS major and an education minor.
In the first case one would really want to go deep into education but one also needs a solid grounding in computer science. In the second case, one may find themselves looking outside of teaching at some point and the deeper and broader knowledge in CS would come in handy then.
But I’m not so sure those are the best recommendations. I have some experience with curriculum for a computer science major. I was on the ACM/IEEE 2013 task force after all. But I don’t know much at all about education programs. I got into teaching through a back door more or less.
I think my ideal answer would be to attend a program in computer science education so that one could learn both the CS and the specifics of how to learn CS at the same time. Good luck trying to find an undergraduate program like that!
There are some people who think it is easier to teach a teacher the computer science they need to teach those courses than to teach a computer science person how to teach. I’m skeptical of that idea. I think it can be done either way and I’ve seen it work well both ways. But too often I think that a “repurposed teacher” learns enough to stay a lesson (or a week) ahead of their students that first year and is tempted to stay at that level. After all there is a lot of work involved in getting deeper into computer science.
Most high school computer programs don’t get much deeper than the first two or maybe three courses a computer science major in a university would take. So why bother learning more? I think we’d have a problem if a physics, math or English teacher only took the first two or three courses in that subject while in higher education. Sure there are people who make it but is that the way to bet your child's education? I don’t think so. We really want teachers to be subject matter experts.
We don’t see summer programs that promise to turn art teachers into English teachers in two weeks. Or English teachers into French teachers in 5 face to face sessions and Google Hangouts during the school year. Why are we so ready to accept that sort of thing in computer science?