Tuesday, August 18, 2015

So You Think You Want To Be A Computer Science Teacher?

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?


Anonymous said...

You focus more on the problems with a teacher learning enough computer science to be a good CS teacher. I think the opposite problem is harder to solve: a computer scientist learning enough about teaching to be a good CS teacher.

Computer scientists often lack the empathy and communications skills necessary to be good teachers. I base this on personal experience, but also research. Personally, I have seen too many computer scientists try to teach a class and not even give their students eye contact. In addition, they don't do enough planning to develop hands-on labs that actually work and they seem to be incapable of thinking about the learning experience from the learner's point of view.

I know there are some good CS teachers, but there are lots of really bad ones, and the problem isn't that they aren't subject matter experts. The problem is that they know nothing about teaching.

Mike Zamansky said...

Great post.

Unfortunately the pathways to becoming an educator are so messed up to begin with - particularly since NCLB. Back in the day, you had to actually know your subject matter and in theory know how to teach. Now you just have to complete an "approved" ed program. Some are probably great but allows for terrific abuses.

Let's see - you can go through nonsense teacher prep like TFA and some equivalent CS training -- voila - in one summer you can be a CS teacher!!!!!!!!

Let's start with CS Ed program. Most of the best educators I know (all subjects) hold Ed programs in low regard. While I got something out of my Ed credits, They could all have been boiled down a single course.

There are a lot of math people that think the worst thing that happened to Math education was math ed. I suspect, with possibly a few exceptions, that's how CS Ed is going to end up.

In my experience, the best way to learn to teach is via apprenticeship but one rarely has that option.

In terms of content knowledge, I've always thought something like a subject area minor would be sufficient -- equivalent to a few courses beyond what would be a college 101/102 or the old AB curriculum.

I've been meaning to write on this for a while (and have been somewhat cynical in many of my summer posts). Maybe I'll piggyback on this post.

Dan Anderson said...

I too, for little justified reason, look down on undergrad education programs. I'd recommend a cs major, and then an education masters (ms is required for nys). I'm mostly a math teacher (and was a math and cs double major) and this was my path, but I found it was a good balance of education amongst all the depth of cs and math that I've been exposed to.

Sean said...

I agree — great post. And thanks for this conversation.

From my perspective (artist, educator, computer science evangelist...more or less in that order), it's important to create an overlapping or interwoven entanglement of these ideas—computer scientist + teacher.

I learned a lot in art and education school, but I learned how to make that knowledge matter by being an artist and teacher. In other words, it's the doing that makes the difference. I'm going to speculate that there's a similar doing/studying dynamic in CS.

I'm not a computer scientist, although I teach programming, digital fabrication, web design, robotics, etc.—all of which I learned on the fly along the way. At this point, some of what happens in my classrooms might actually qualify as computer science in the eyes of a software engineer or skilled theorist (e.g., making interactive, physical, or generative art with Processing and javascript), but other stuff might seem extraneous (e.g., puzzles, jokes or poems with html/css).

The difference, for me, is that I'm teaching future and current teachers how to think computationally in their work. The overall challenge is to get more systems complexity + creative computational literacy into K12 ecologies. That's not going to happen unless teachers and other stakeholders begin to hold computer science as integral to their practice, whether they teach math, science, English or history.

The specific challenge I'm facing is that CS still seems totally foreign to my students and colleagues. As long as we perceive a chasm between content and pedagogy it's unlikely that my job is going to get any easier, or that schools are going to become more literate in computational complexities.

How can those of us who want CS education to gain traction in schools get around this conundrum? One way to begin might be by thinking and feeling our way toward a place where the differences between learning CS and learning how to teach CS aren't so starkly defined. What would that curriculum look like? I don't know. But I suspect that dreaming it up will require changing our definitions of both "teaching" and "computer science."

Garth said...

CS degree plus Education or Education degree plus CS. Kind of like the nature vs nurture discussion. I do agree with Alfred that both paths will work depending on the person. Having said that I think the better path is an Education degree plus some CS. The education emphasis simply prepares a teacher to deal with all levels of students, from beginners to programming/CS geeks. At the high school level we are not attempting to generate professional programmers, we are trying to teach kids how to learn. An Education degree is more suited to that objective. The CS degree does not teach how to teach basic programming in languages like Scratch or Small Basic. It does not teach how to motivate reluctant students. Teaching is often more motivation than content.
If I were asked on advice on the path to being a CS teacher I would say “Don’t”. There simply are not enough full-time jobs in it yet. Get a degree in Education specializing in something marketable; science, math, English, etc., and get a second minor/endorsement in CS. It is simple reality. Of course the scarcity of CS Ed programs makes a lot of this conversation a bit moot.