Anecdotally, many people get into computer science originally because they're interested in programming because they like the idea of, for a major instance, creating video games. Surprise, many of these kids are male. Added to this is a general STEM selection bias.
So we need outreach about careers, opportunities, and the fun of CS and programming, much younger, and targeted at groups like girls who would otherwise be less likely to try it out on their own. Address our diversity issues from youth up rather than when it's too late.
http://www.npr.org/sections/money/2014/10/21/357629765/when-...
My understanding is that AP computer science is basically on life support right now and may be dead entirely within the next few years. It is probably a poor metric for measuring early interest in computer science.
The curriculum sadly is very fine-tuned to an obscure Java-dialect created specifically for the course. Though the program does teach basic principals of CS, there's a great deal of time wasted on this weird little platform; obviously, most high school students these days with technical inclinations would rather learn more open and directly applicable platforms to learn.
The even greater problem though stems from the instruction, which I would argue is derived from the aim of the course itself. There's a very heavy focus on teaching to the test, as in the AP system teachers are rewarded for having high-scoring students. This means there's a lot of bland dissemination of facts and non-trivial projects are few and far between.
Overall, as someone who plans to have a career in software, I've been really disappointed with the program. Supposedly there is a program launching in fall 2016 however: https://advancesinap.collegeboard.org/stem/computer-science-...
Furthermore, the instruction mirrored the poor instruction in mathematics. "Here, memorize this template for writing a loop. Then, when the test asks you to write a loop, regurgitate it." Like too often in mathematics, there was no emphasis on understanding, but rather the emphasis was on rote memorization.
With the combination of contrived examples, shallow coverage, and poor instruction, it should not be a surprise that so many students are disinterested in computer science. Not to mention that Java is an exceptionally poor choice for an introduction to programming (the AP curriculum used to use C++, which is also a very poor choice).
(As a tutor, I've had good luck with Scheme, and I've heard from others that Python and Lua are also good choices. You could also kick it old-school with a structured BASIC dialect (which is how I cut my teeth) or Logo, if you can find a suitable implementation.)
That's completely correct. Although, it's because most "CS" instructors majored in english, history, or math in college. They were pushed into teaching computer science and sent to a "learn Java in 4 weeks" summer training.
They are doing the best they can with what they know. We either need more computer science majors to take up teaching, or we need better training for non-computer science teachers to actually learn computer science (but not too good training, otherwise they might get a "real" job doing computer sciencey things)
You go to school for your diploma/degree. All too often school has stood in the way of my education. There's MIT OCW and Stanford CS classes out there, among I'm sure so many others, that can help you get that solid foundation you want.
Meanwhile their peers in other schools where Java is the only curriculum are struggling or dropping out.
The biggest issue with computer science education is that "studies have shown" teaching people with no computer science background how to teach Computer Science leads to better retention of computer science teachers (ie, they don't leave for a better paying job in industry)
That means that many (most?) computer science teachers have no training in actual computer science except a 4 week summer course in "how to teach computer science".
Heck, there's a math teacher at my school finishing up a degree in computer science and he told me "I'm graduating in May and then I'm outta here." and he'll probably get a job that pays 2 or 3 times as much with better benefits and better hours (yeah, even counting "summer vacation")
The college board doesn't offer any curriculum, they just give guidelines of what will be covered on the AP Test. Most of the curriculum that you can buy is pretty poor (as you've experienced)
I'm not entirely sure what you mean by "obscure java-dialect created specifically for the course". That smells like something coming from your teacher/the curriculum your school bought. College board uses a "subset" of Java 1.6. It's regular java (albeit an older version), but limited to only using the int, double, and boolean primitives and ignoring auto-boxing. You can use char, float, or even auto-boxing in the open response portion, you just won't encounter a multiple choice question covering them.
There are for sure better languages that could be used for teaching but at some level the student has to know the syntax of an if-statement and the syntax of a for-loop. From your perspective, it seems like your teacher is just hammering the basics and not giving you anything challenging. I imagine that is happening because many (most?) of the other students in your class can't write a syntactically correct if-statement or they try to use a for-loop when they should be using an if-statement (and aren't writing the for-loop syntactically correctly either)
You could say that teachers are being "rewarded" for having high AP test scores, since that'll keep them from getting fired. There really isn't any reward.
As far as AP Computer Science Principles goes, you may enjoy that class more than AP Computer Science A. It will all depend on which curriculum your school goes with (there are several companies pitching themselves to schools right now) and your teacher. That class is project based and it can be whatever you make it to be. (However, there will be a lot more writing in it than you might expect... and there is a good chance it will be Scratch based since the emphases isn't on programming but "creating").
Long story longer, computer science education isn't going to get better unless people that know computer science come to teach people computer science. As it stands, computer science will continue to be taught by english, history, and education majors and they will do their best, but their best will mostly be teaching the syntax of Java and how to pass the AP Computer Science test.
My AP teacher was a math teacher who'd taken a 2-month summer in how to program and nothing about how to design systems before programming.
It has proved just as irrelevant as I imagine yours will.