Mark Guzdial had a guest post by Eric Roberts of Stanford today titled - Guest Post: Eric Roberts on the Dangers of Escalating Enrollments which really got me thinking. While the focus of the post was increasing CS enrollment at Stanford and some other universities it got me thinking about high school computer science and how it relates to this issue. I did post a longish reply in the comments there but decided I had more to say than was appropriate for a comment. What would it mean if interest in CS grew in HS? Could we handle the increase? What is our capacity? And most important, would what we do help or hurt university computer science education?
My first thought on it this was "well that is Stanford." They do after all attract a pretty smart bunch of students. But the bit about students building credential for a weak job market makes sense in a lot of contexts. In the long run that is likely to create the same sort of bubble that the dot com boom did with people taking CS primarily for the money. Although if as it appears to be happening at Stanford, students are actually growing to like the subject after taking it for other reasons perhaps this increase will last. At least at some not yet determined plateau.
The capacity problem at universities seems a little easier to deal with than if it were happening at the high school level. There are, I hear, a bunch of CS PhDs floating around looking for faculty positions rather than temporary post docs. I read something about that at Mark Guzdial’s blog. (http://computinged.wordpress.com/2011/03/09/impact-of-increasing-number-of-post-docs-in-cs/) Classrooms and lab time are somewhat harder but given faculty solvable issues. In high schools we have a terrible chicken and egg situation with not enough demand to hire teachers and not enough teachers to fill jobs in places where demand grows – if in fact it grows at all.
I’d like to think that the word would get down to high schools that students at top schools, like Stanford, are taking more CS to help them get into the job market and so increase demand for CS earlier. But I am not sure that will happen in anything like the scale and timeliness we’d like. Even it, or perhaps where, it does get to the attention of students, guidance counselors and school administrators where will the teachers come from? My concern is that teachers with limited experience and excitement about the field of CS will be “drafted” into the roles and turn off students before they get a chance to get excited about CS. This could reverse the trend that Stanford and others are seeing. This would be bad.
The number one thing, in my opinion, that high school computer science needs to do is to build interest in learning more. Actually I see that as the role of high school in pretty much any subject you can think of. Do the courses we have today do that? I am optimistic about the new APCS Principles course. There is talk of a new pre-AP course along the lines of what several schools and districts are doing. They look ok to me as well. Again, assuming the right people are teaching them. APCS as it exists now? OK I’m not so excited about that. I think that one has to already be excited about CS to enjoy that course. Even then it can be a thrill killer. Again, it need not be with the right teacher and the right emphasis on the exam. That means, again my opinion, not treating the test as god.
So the two problems are the right teachers and the right courses/curriculum/teaching tools. I think there are lots of good tools and curriculum. I post about a lot of stuff like XNA Game Development courses. And Small Basic for introductory programming courses. Free or inexpensive tools for schools (MSDN AA – contact me if you need this for free) and students (DreamSpark) abound. For the Java fans there is GreenFoot. There are also graphical drag and drop teaching tools like Kodu, Scratch and Alice. I like to think that many of the programming projects I write about here are fun and build interest as well. But where are we going to find the teachers?
There are some great opportunities for professional development for existing CS teachers. (Information on my favorite at the end of this post) but not a lot of incentive for teachers to move into the field. The ever articulate Mark Guzdial took this question up on a post at What’s the argument for becoming a computer science teacher? and I took up the question at Making the Case for Becoming a Computer Science Teacher The fact remains that finding enough good computer science teachers is probably the hardest problem we have in high school CS education. And far too few people outside our immediate community seem to be interested in addressing it.
Footnote: High school computer science teachers really should attend the Annual CSTA Computer Science and Information Technology Symposium this summer in New York. Register now at http://tinyurl.com/csit2011reg
Another excellent, pithy contemplation, Alfred, on the state of computer science. To me, the tough thing is that Computer Science - to many - always means "Programming" - when in reality - the Introduction to Computer Science course I teach has programming but it is also understanding the history, context, problem solving (how do I compare the best computers,) etc. There is so much more.
It is interesting because my daughter is LOVING "playing" your Kodu game creator. At least, that is what she calls it - "playing." But in reality, she is programming. She is writing programs - and now, she is installing them on computers in the lab for others to play.
I've always known she'd be good at this but this has been a low barrier to entry sort of activity to get her interested. So, I think two things -- we use the achilles heel/ sweet spot of this generation "gaming" to inhale kids. But we also have to look at the big picture of UNDERSTANDING where the world is heading and the technology trends so that students can be educated and realize where the growth potential will lie in their lifetime.
Is there a shortage of CS/programming teachers? In my little microcosm of Montana there really is not. The reason for that is hardly any schools offer programming as a course. It is sort of considered an unnecessary industrial arts elective that really does not fit into any existing department. I suspect Montana is not alone in this. Until high school administrations start to realize the programming is at least as useful as the 19th century algebra taught now the demand will not exist. If programming ever does take off then I think there will be a major issue with finding teachers. The lag time between what university teacher prep programs offer and what high school teachers need in order to teach in a modern classroom is rather large. Like Alfred says, there are a lot of great tools out there to construct excellent courses around, but the teacher training does not exist because the demand does not exist.
I do not believe there are great opportunities for professional development for existing programming teachers. (I do differentiate CS teachers and programming teachers. CS covers a really broad spectrum.) The cost of travel and reduction in school budgets is putting a big crimp in these opportunities. Last year I went to an excellent Microsoft Institute seminar in Bellevue, WA. My school paid the motel but everything else was on my dime. At that price I have to be very picky about what I attend. My local university is hosting a four day Education Technology Conference this summer. Topics include Google Earth, iPods in the classroom, Desktop publishing, SMART boards and so on. Lots of good stuff for non-programming teachers but absolutely nothing for programming teachers. This appears to be typical for most tech conferences. Admittedly Montana is a bit off the in the backwoods as far as programming and CS goes but I just cannot believe we are that far from typical.
I want to piggyback on what Garth has expressed. As a high school computer science teacher who currently finds himself looking for a new teaching position, I have found virtually no computer science openings. I live in the south suburbs of Chicago, far from the backwoods, and the jobs just don't seem to be out there. It seems the best approach is to take a position teaching mathematics and hope to convince administrators of the value in starting a computer science program.
It's sad but the best CS teachers are not always where the most CS demand it. And all too often administrators cut CS first because, I believe, they don't understand it. So we have some great CS teachers who are underutilized or not being utilized at all. While on the other hand there are some not so great CS teachers, who may be wonderful people and wonderful at other subjects, pushed into CS courses they don't really want to teach where they are not exciting students and so slowly (sometimes not so slowly) hurting future demand. So there are lots of problems here.