The New York Times had a very interesting article on the down turn in women in Computer Science. At one time women made up 38% of the CS degree graduates while today they are only about 28% of them. The article quotes people blaming various causes but role of high school computer science including the AP CS exam worries me the most.
Jan Cuny of the University of Oregon says:
“The AP computer course is a disaster. It teaches Java programming, which is very appealing to a lot of people, but not to others. It doesn’t teach what you can do with computers.”
Barbara Grosz, a computer scientist and dean of sciences at the Radcliffe Institute for Advanced Studies at Harvard, says that once
"students entered college with little idea of what computer science involved, so they would try it and find out how much fun and how interesting it was, women included. [Now] they get the wrong idea in high school and we never see them to correct the misperception.”
These are not new complaints. I have heard more then a couple of university CS faculty say they preferred to have students who had no exposure to computer science in high school. They complain that they have to unteach bad habits before they can teach good habits. Yet universities want high schools to send them students who are interested in computer science. How does one create interest in computer science without teaching some of it? It's a complex issue.
I do agree that the AP program is part of the problem BTW. Not because it uses Java although I do believe there are better languages. And not because it teaches programming because I think programming can be fun and interesting. Rather I think the AP curriculum tries to teach too many concepts in too short of a time, is too involved in teaching to a test, and fails to cover concepts and information about computer science as a field that would make it more interesting for students. The idea that it realistically matches any real college courses is just not credible. It crams much more into one course than any reasonable college course does. Also the test is so complex that students need almost as much practice taking those kinds of questions as they do learning the concepts it tests. It's no wonder the course turns many kids away from computer science.
I've had a surprising number of students go on to study computer science in college who only took a first course (based on Visual Basic) but found computer science to be interesting and fun. In that course the big goals were to provide an understanding of the concepts and, perhaps most importantly, to allow students some early success. Oh it was a reasonably rigorous course but not crushing. There were of course no pretensions of being a college level course. Rather the goal was to develop that interest with understanding of what computer science is.
I think that we need is high school courses that build interest. They must allow students to demonstrate success with reasonable tasks. They must provide an understanding of the many areas where computer science can literally change the world for good. And they must provide a base of vocabulary and basic concepts so that students who decide to continue in computer science will have a running start towards success. If the AP program doesn't do that than schools should look for alternatives.
One last thing - we are really not doing enough to understand and teach better ways to teach computer science. If the universities really want to help they will get the CS and education faculty together and figure out how to better prepare high school and middle school teachers to teach the subject. They should be part of the solution rather than just whining about poorly prepared HS CS teachers.
Now I know that many university CS departments do train teachers but most of the time they are teaching the concepts and not spending much time on how to teach them to students. Example is not enough because what works to teach something to a teacher may not work with a 16 year old. Note that the CS4HS program at CMU is a rare exception there. Kudos to them! But in general can you name a university that teaches a course on teaching computer science? Not many out there are there?
[Thanks to Kathy Weaver whose blog post sent me to the NY Times article.]