I have heard many complaints about the Advanced Placement exam (and corresponding course) in Computer Science (APCS) since CS undergraduate enrollment started to decline. These comments typically include "the APCS has to go" and "the APCS does nothing good for undergraduate computer science" and most pointedly, "the APCS exam is a factor in declining enrollments in computer science." I disagree strongly with that last point. I do think that the APCS is in need of improvement, especially in order to achieve the goal of broadening participation in computing. I even agree that it doesn't do much good for undergraduate computer science today. However, I don't believe that it does any harm. The reality is that there is just so little computer science in high schools today, that the APCS (and just about any other CS curriculum) has effectively no impact on potential computer science students in high school.
I am part of an NSF Broadening Participation in Computing alliance called "Georgia Computes!" whose goal is the improvement of computing education, across the entire pipeline and across the entire state, in order to broaden participation. One of our accomplishments is that the number of APCS high school teachers in the state has more than doubled in the last four years, and most of those new teachers took workshops from Barbara Ericson, co-PI on the project. The way we get the teacher count is by counting the number of high schools in the state who send anyone to the APCS exam. Since we know of only one high school in the state that has more than one APCS teacher, the number of high schools is essentially 1:1 with the number of teachers. The percentage of high schools offering APCS out of all high schools is now higher in Georgia than any other school in the Southeast. Georgia's percentage of APCS-offering schools is higher than Florida, South Carolina, Alabama, and North Carolina.
That sounds impressive -- until you realize that the percentage is 22%. 22% of Georgia high schools offer APCS. The inverse implication is that 78% of high schools in Georgia offer no APCS, and if a high school doesn't offer APCS, they most likely offer no computing at all. Thus, with more than 75% of high schools offering no computer science, Georgia is a leader.
The Computer Science Teachers Association (CSTA) has been crunching the numbers on APCS. The APCS has been around for 25 years now. In 26 states, the grand total of all students who have taken the APCS in all that time is less than 200. That's only 4 students per year on average (over 25 years), in more than half of the United States. Four students could be the output of a single teacher in a single high school. In 26 states, then, there may be essentially no high school computer science at all.
APCS does emphasize programming more than what we might want in high school CS, and it does emphasize Java, which is not the best introductory programming language. Both of these are not the fault of APCS. The APCS is design to reflect our own introductory courses. If we want APCS to change, we should change our own CS1's.
However, it doesn't really matter where the flaws in the APCS came from. I can't believe that APCS is swaying high school students' opinions of computer science if the vast majority of those students never see AP classes. I've heard the argument that, by offering credit for APCS, universities are holding the APCS in some respect and thus drawing attention to it, which may be hurting us because of the APCS failings. Yes, the APCS may be overly admired by college CS departments. That doesn't change the fact that even if a high school student in the US wanted to take APCS, almost none of them have any opportunity to even see the course. We may be saying implicitly, "the APCS is great just as it is!" But if a student can't take APCS, that statement has no real impact.
The problem with high school computer science is not that APCS is such a bad model. It's that far too few students see any model of CS at all. Jan Cuny at NSF has launched an effort (a) to create a new APCS exam and (b) to create "10,000 CS teachers for 10,000 high schools by 2015." 2015 is when the new exam should be ready, and we need teachers trained and ready to teach it. We need this new, better model for teaching CS in high schools. Even more than that, we need more secondary CS teachers. Without teachers, even the best models will get no further into high schools than APCS is today.