Statistics is indeed quite important, and whether AP CS or AP Statistics is a more useful use of a high-school student's time is a useful question (assuming they have to choose, which maybe they don't?). But AP Statistics is not teaching computational thinking; it's teaching statistical thinking, which is not the same!

Computational thinking, or to use an older term, procedural literacy, is the idea that people should understand how to think in terms of processes, procedures, etc. Rather than teaching programming, which often (especially at introductory levels) focuses a lot on the mechanics of a programming language's syntax and other idiosyncracies, the idea is to teach people how to even think about the basic idea of a machine that can execute programs. Many people can't do that: even leaving aside that they don't know C or Java or Lisp, they also don't really understand what an algorithm or a computer program is conceptually, and have absolute no idea what kinds of things can be computed and what kinds can't, or which are easy or harder to compute. They lack the ability to interact meaningfully with non-code representations of computation and algorithms as well, like flow charts or (natural-language) instruction sequences.

Statistical thinking is quite a bit different, more about proper use of data, quantification of evidence and uncertainty, etc. It can be complementary to computational thinking, but it isn't the same skill.

Statistics is indeed quite important, and whether AP CS or AP Statistics is a more useful use of a high-school student's time is a useful question (assuming they have to choose, which maybe they don't?). But AP Statistics is not teaching computational thinking; it's teaching statistical thinking, which is not the same!

While I agree statistical think is different than computational thinking, to answer your question I think it is a better use of a students time to teach statistics. Properly taught, it teaches you to think about how to formulate a question, what data you need and how to analyze it. In short, it is as much about the problem as the answer.

Computational thinking, or to use an older term, procedural literacy, is the idea that people should understand how to think in terms of processes, procedures, etc..

SNIP

Many people can't do that: even leaving aside that they don't know C or Java or Lisp, they also don't really understand what an algorithm or a computer program is conceptually, and have absolute no idea what kinds of things can be computed and what kinds can't, or which are easy or harder to compute. They lack the ability to interact meaningfully with non-code representations of computation and algorithms as well, like flow charts or (natural-language) instruction sequences.

Again, I concur with you comments. That's why code monkeys are cheap and those who can actually develop a solution valuable; and the skills you mention don't become obsolete when a new language comes along. Unfortunately, far to many people equate the ability to code with being a computer scientist or engineer. That's not to say we don't need good coders but focusing on coding and forgetting the how and why behind it is doing them a disservice. I've also found the ones who can really write elegant code generally also think conceptually as well. Maybe I was lucky but when I took CS in high school the teacher made us explain and diagram what we are trying to do before coding, and rewarded accomplishing tasks in as few lines of code as possible. A she put it, "anybody can write a program with 100 lines to accomplish what can be done in 2."

Statistical thinking is quite a bit different, more about proper use of data, quantification of evidence and uncertainty, etc. It can be complementary to computational thinking, but it isn't the same skill.

True, but faced with learning statical thinking or how to write code I think the former is more valuable.

It's not really a new debate, but the assumption that high school students will on average be better served by taking calculus instead of statistics could use some scrutiny.

Practically speaking, basic familiarity with statistics is also a form of civics - teaching kids when to call BS on bogus claims, helping them to understand what statistical significance means and doesn't mean, etc.

It's not really a new debate, but the assumption that high school students will on average be better served by taking calculus instead of statistics could use some scrutiny.

Students should learn calculus, but it could be compressed, and maybe even merged with physics. My class spent a lot of time learning how to do things like integrate the square root of the reciprocal of the co-secant. That is not useful. Students already get quite a bit of exposure to statistics and probability in math classes, although there is usually not a class solely focused on that topic.

Practically speaking, basic familiarity with statistics is also a form of civics - teaching kids when to call BS on bogus claims

Indeed. I have long felt that we should be teaching "bullshit math" where rather than getting a problem and finding a solution, the students are presented with a political advocacy statement, and tasked with identifying the logical and mathematical flaws, unstated assumptions, and missing information. This sort of critical thinking skill, along with learning basic economics, could lead to a better functioning democracy.

Practically speaking, basic familiarity with statistics is also a form of civics - teaching kids when to call BS on bogus claims

Indeed. I have long felt that we should be teaching "bullshit math" where rather than getting a problem and finding a solution, the students are presented with a political advocacy statement, and tasked with identifying the logical and mathematical flaws, unstated assumptions, and missing information. This sort of critical thinking skill, along with learning basic economics, could lead to a better functioning democracy.

The "bullshit math" you refer to is known as Symbolic Logic. [philosophy-index.com] It provides a mechanism for reducing statements and concepts into operands, effectively...and by doing so you can more easily detect things like non-sequiturs, circular logic, self-contradiction, empty statements with no real meaning and the "post hoc ergo propter hoc" bullshit that is the basis of many knee-jerk legislative actions. The real beauty is that by sticking to the symbolic operands of a statement rather than the contextual content, y

Yeah. Teaching people to detect bullshit and think scientifically would be good.As for getting a problem and finding a solution, it's still good to teach students to think and solve problems, rather than be an inferior "Google" and regurgitate memorized solutions or follow very specific memorized processes. Because I actually know adults who can't do basic problem solving- say there's a problem with something, their default is getting stuck. They don't go - it could be caused by A, B, C, D and perhaps other

I'm a new calculus professor. Good god, is it hard to find relevant examples of, say, rational functions. In fact, if you have any beyond filters in EE, I would really appreciate seeing them before lecture on monday.

In EE, harder calculus does not follow the easier calculus. In EE, you go from calculus to statistical calculus. You don't integrate over smooth equations, you integrate over noise. Then comes the number theory, because you you need to grok error detection, correction and some crypto.

The biggest failure of school math is to present calculus as being the 'college path' of mathematics, when in reality it's a back water and the engineering action is happing in finite fields which schools simply don't admit exi

There's a fair amount of graphics stuff based on NURBS (Non-Uniform Rational B-Splines). In my current job, we rely very heavily on a commercial NURBS library. I don't think you want to teach NURBS directly, but you could base some problems on them.

I took trigonometry, calculus, and (later) differential equations and vector calculus. Integrating sin(2x) did not contribute enough to by education to be worth the effort.

As a computer programmer, I need discrete math for my job. (The only computer people I know using continuous math for their day jobs are in HPC/scientific computing). As a citizen, voter, and member of society, I need probability, statistics, and a good understanding of logical fallacies.

Math classes (my minor) and Software Engineering (my profession) have little of the same flavor at all. Math classes feel closer, perhaps, to Physics (my other degree), but even still, it isn't the same. Applied math is incredibly useful. Abstract math isn't useful, and those involved are unabashed proud of the fact. Very sad for Mathematics. The idea of teaching applied math (science and engineering based,) is a great idea that won't fly, due to the culture of mathematical academics. If you want to r

Number Theory has application today, oh yes. Hellman (two 'l's, not one) had a BS, MS, and PhD in Electrical Engineering. Diffie had a bachelor's degree in Mathematics. My question is this: after Number Theory was shown to have applications how many Mathematicians lost interest due solely to the fact that it was no longer "pure" math? I knew a topologist who grew embarrassed and closed his office door before discussing relativity. It just wouldn't do to be interested in applications. Perhaps I should h

But you do need some calculus for computer science. Not all those integration techniques (thankfully I've never had to do an integration by parts in my professional career), but things like limits and rates of change and logarithms and the relation between polynomial powers.

But you do need some calculus for computer science. Not all those integration techniques (thankfully I've never had to do an integration by parts in my professional career), but things like limits and rates of change and logarithms and the relation between polynomial powers.

It is, however, what AP Computer Science teaches you. Maybe it's massively improved since I took it, but when I took it we spent an inordinate amount of time learning really stupid detailed things about C++, like the idiosyncracies of iostreams.

A mechanic is not an engineer, they are different skill sets. By analogy, you won't get far trying to apply CS if you don't know what CS is in the first place, what you can do however is tinker with the machine and make it do something interesting, perhaps even useful. CS is a branch of mathematics, it's closely related to Operations Research (or logistics as it is often called in the US), it makes heavy use of statistics, calculus, and other mathematical tools to solve computationally expensive optimizatio

Are you sure we're both talking about high-school CS courses, here? I'm not talking about a university CS degree. I have one of those, from a very theory/math-focused school, and yes, there was virtually no programming in it. But the AP Computer Science courses in high school are not like that, and should probably be renamed to AP Programming. That's also how Google and others are promoting them (as part of these "learn to code" initiatives), which was the jumping-off point for this article.

The AP curriculum has probably changed over the years, but my AP computer science courses were computer science course. Yes, we learned a language. Yet we went beyond that to learn how languages (in general work), how particular algorithms work, as well as how to design and implement various algorithms. While the projects may have been boring by modern standards (i.e. we didn't frame the course in the context of games), the actual content and instruction was exciting.

The "learn to code" initiatives, however, are precisely about teaching people to learn how to churn out code. They're not called "learn CS" initiatives for a reason. (And AP CS, despite the name, is more of a learn-to-code than a CS course.)

then it's a lot more like computational thinking. A team of us - 3 college math profs (goals) , 6 HS math teachers (reality check) and 2 scientists (applications) were asked to craft a HS math series from scratch. We were able to condense most of traditional HS math into three years, then allow for a year of electives. What we came up with as the start of the three years was to "force the card" onto the students with some evocative event, like the teacher walks into the room and declares "boys are taller than girls". And that's when the battle starts. "I'm taller than him!" "Yeah, but look at these four tall boys and those five short girls." Etc. So the socratic stuff starts, and they go through the developmental history of statistics in order to find the tools needed to solve problems (i.e., arguments about numbers). It leverages all the arithmetic they learned K-8 and some of the geometry, they need to think hard about why a stdev can be more sensible than a variance, why diagrams and structures are important in dealing with numbers, why arrays and variables and sorting and the procedures involved in mean/median/mode etc. have to be thought out thoroughly. Add in testing, logic, thresholds, and you pretty much have the basis of many of the skills you want a programmer to have when they're tackling an actual problem in context. Put a Ti-83-ish in their hands, and have them use it all along. Far less whining about "like will we ever use this" and a glimpse of what a career can be doing this sort of thing.

If you do not understand statistics you do not understand Science and empiricism. The programmers I meet are great at Discrete Mathematics, but if you beyond that, on to some thing that requires more of an exploratory mind set and data gathering, they are way out of their depth. They do not seem to understand the difference in how you approach things. Since, IMO, most of the universe is better investigated imperically they are out of their depth with real world data. They do not know how to collect, analyze, QA, or interpret it. With the emphasis on data analytics and and "Big Data" I consider that to be dangerous.

Many people can't do that: even leaving aside that they don't know C or Java or Lisp, they also don't really understand what an algorithm or a computer program is conceptually, and have absolute no idea what kinds of things can be computed and what kinds can't, or which are easy or harder to compute.

Is there in fact a better way to teach that than by sitting down with a teaching language and actually doing some programming? Writing a LOGO program to draw fractal trees was something a whole class of kids (some of whom had never used a computer before the class) managed to accomplish. Then we understood recursion, limits, loops, functions, operands...

We throw tens if not hundreds of millions of dollars at girls and women to get them to choose technology or engineering as a major, but completely ignore that they're already a majority to an overwhelming majority of graduates in literally every other major and dominate every level of education. Evidently it's more important that women not be a mere ~5% less of a program that's already only 10% of the degrees conferred in the US than it is to do something about the fact men are barely 1/3rd of college graduates in the first place.

So in other words, you were wrong, didn't show anything real to prove you're not wrong, but you are confident that you are right.
That's actually a bigger problem in the U.S. these days. People are not actually good at things, but they're very confident that they are.

Yes. I wouldn't say you are immune to it either.

But here's an issue. What if we do all this, what if we add gender sensitivity to the qualifications for men, and start making programming a mandatory class for women, and not allow men to take the classes, and we still don't have gender equity?

Just based upon my experience in a University environment, and involvement with programs to get young women inviolved with STEM careers, I don't think we're taking the right approach. At some point, at some time, at

But here's an issue. What if we do all this, what if we add gender sensitivity to the qualifications for men, and start making programming a mandatory class for women, and not allow men to take the classes, and we still don't have gender equity?

My guess: If you were looking for a course of action to make programming even less attractive to women, you'd be hard-pressed to beat that one. But then, as I said on the other thread, I've been seeing women-only sections of such courses fail for a long time; the wo

Consider the time demands on medical residents.
Or attorneys trying to make partner. And yet women go into those fields.
Btw, on another note, it has not been my experience in 15 years as a developer that the time demands are out of whack with other relatively high paying professions. If I ever had a job that matched up with the stereotype (frequent all-nighters, etc.) I would quit.
My personal opinion for women's disproportionately low interest in software is the cultural baggage. For whatever reason t

Consider the time demands on medical residents.
Or attorneys trying to make partner. And yet women go into those fields.

Sure. But I'd put my hours up against any of them.

Btw, on another note, it has not been my experience in 15 years as a developer that the time demands are out of whack with other relatively high paying professions. If I ever had a job that matched up with the stereotype (frequent all-nighters, etc.) I would quit.

And so would a lot of people. Can't say I'd blame them. Then again, I was the highest paid person in my department, was immune to layoffs, and was able to retire at 55. Part of that was my willingness to take on the hard work that others were "too good" for or were worried that they were being taken advantage of if they had to work extra.

My personal opinion for women's disproportionately low interest in software is the cultural baggage. For whatever reason they're more averse than men to associating themselves with the computer programmer stereotype, even if they themselves don't fit that stereotype. Women seem to be, at an aggregate level, less willing to pursue "geeky" professions. Medicine, despite requiring science classes and long hours, doesn't carry the same stigma as CS and EE.

I certainly wouldn't deny that - it is a rational argument, and likwise a part of the problem such as it is. And part of

Okay. But you're an outlier in your profession. Medical residents and partner-seeking attorneys are all expected to work long hours. Regardless, even if the avg. hours worked by software dev's were on par with the avg. hours worked by partner-track attorneys that wouldn't detract from my point, which was that women go into those two fields despite the long hours. Ergo "the long hours" isn't a great explanation for women not going into software dev.

So in other words, you were wrong, didn't show anything real to prove you're not wrong, but you are confident that you are right.
That's actually a bigger problem in the U.S. these days. People are not actually good at things, but they're very confident that they are.

Yes. I wouldn't say you are immune to it either.

But here's an issue.. (blah, blah, blah, lots of hyperbole and strawmen galore, refutations of opinions not offered, etc., etc.).

Nonsense. I correctly pointed out that the GP claimed something to be true, was refuted, and offered nothing in response, except the opinion that he was *still* right.

You, on the other hand, made a snide remark at me with no basis whatsoever, and then proceeded on a long tangent that had nothing to do with my point. I surmise that you missed my point, and read a lot into my post based on your prejudices, which was not there.

So, congrats. Now there are two of you up on the stage accepting awards for hig

You, on the other hand, made a snide remark at me with no basis whatsoever,

I'm sorry, I see, you are quite easily offended, by me saying you might be part of the problem too. Consider that your response might be proving the point.

"Blah blahs", "strawmen", "snide remark" "long tangent"

You do not control the conversations here. Neither do I. This is how threads evolve. If you don't like what I write, you can ignore it, refute it, or go all offense on me. Attacking me rather than the argument seldom wins the argument

Really would have been nice to have women in the Physics programs. We are talking almost no women at all in undergrad classes, and literally none in graduate classes. The fact that there are more women getting degrees isn't really relevant to the skew in some disciplines.

The role of AP Statistics is to offer an AP 'math' to students who don't stand a chance in AP Calculus, but who demand an AP math class on their transcript. Most do not consider AP Computer Science 'math' enough for it to play that role, hence the surge in AP Statistics. On top of that, AP Computer Science is perceived as being much harder than AP Statistics. For a Junior or Senior looking for a reliably easy AP, Computer Science is not the way to go.

I wouldn't call statistics a part of math, but the idea that it's somehow easier is ridiculous. If it's so "easy", why have so many people so many problems with actually using it? Even those who're supposed to be masters of it, like researchers and scientists?

Anecdotal, but most people I know who've signed up for a stats class as a math based elective (working adults pursuing a college degree in their free time) have no clue what statistics actually is. The last one told me almost verbatim "It's just a bunch of percentages, how hard could that be?".

I took a refresher college stats course at around age 40. It certainly was not a bunch of percentages. It was a bunch a tests and distributions (t-test, poission, chi-square, anova etc) and how to apply them. Useful, but it didn't get as far as covering what I'd consider is required to be able to think critically about statistical inference and correct trial design. It worked for me, I had plenty of the latter and I'd forgotten much of the former. But for someone coming through the system the fist time, the

OK, that's possible. We don't have the American AP system around here, so I won't pretend I know the exact curricula, but one still wonders why the need to dumb it down for high-schoolers even more than in the case of function analysis (and why are those colleges being dumb).

AP stands for Advanced Placement. The program intends to offer college-level courses to high school students. Each course culminates in a standard exam in the spring which is graded on a 1-5 scale. Some colleges award college credit to their students for AP courses they took in high school, depending on the score and the exam.

as governmental education agencies have pretty much said that anyone can now take an AP course and exam, whether they have demonstrated the needed aptitude or not. Pushing students not yet ready for these courses into them is the wrong way around. Building a system that can get them there has been pushed off to commercial pre companies, which is tough if your actual goal is to give traditionally disadvantaged students the needed guidance to get there (cost is the issue). In fact most of this is in order to promote a honorable but currently undeliverable system of egalitarianism. In my state, this solution was created in response to a lawsuit instead of by - oh, I dunno - actually implementing a sensible educational system and having local non-educational government agencies work on the life-in-hell part of urban living. Students spend 6 hours per day in school, 18 back in whatever else is going on in their lives, none of which the policy makers would put up with on their property for more than 5 minutes. It's like holding someone's head underwater for three minutes out of four, then being surprised that they spend that other minute gasping for air and clawing at your face.

when everyone knows how to code expect it to be the factory work of this century. find some pictures of early 20th century offices where everyone sits at a desk in a huge room with no dividers. it's already here again

the value is going to be figuring out algorithms to make sense of the huge amounts of data being collected. the code to implement the algorithm will be your average low wage job

Is a very specialised branch of mathematics. Yes, the basics are important to know, and they can help your understanding of things in general but knowledge of Statistics will not make other subjects easier. Knowing Statists, unlike all other mathematics, does not help with programming. I am not going to make broad generalizations about most students, but university Statistics was the hardest course I ever took. University Calculous was just more of the same, But Statists start out counter intuitive and weir

Well, 1st - I have my Business Administration Bachelor's degree (& along with that came our subject-matter, STAT I/II) with an MIS concentration... @ 1st, I didn't think it was very useful (in middle mgt. roles @ least for me) & secondly, I've been @ that as my "day job" for the better part of, oh... around 20 yrs. now"

Could have been:

Well first I have my Business Administration Bachelor's degree and along with that came our subject matter statistics I/II with an MIS concentration. At first I didn't think it was very useful in middle management roles, at least for me and secondly, I've been at that as my day job for the better part of, oh around 20 years now

Statistics is incredibly important for understanding algorithms and complexity theory. Many modern algorithms are randomized, and not understanding the statistics involved in using them can be a huge problem.

Knowing Statists, unlike all other mathematics, does not help with programming.

uhhh.. what?

Sure, it wont help with HelloWorld.c,... but lets be real here... unless you definition of "programming" is gluing 3rd party libraries (written by people that know math) together, you clearly havent thought it through. While statistics doesnt encompass all the more-than-simple math knowledge required to be a good programmer, its a start.

If you want any sort of proof of this, open up any volume of the Programmer Bible, aka Donald Knuths "The Art of Computer Programming" - very little code a

I'm a CS grad and I took AP Stat and AP CS in high school, and I'm currently working as a programmer. In relation to programming, stat is very nearly worthless. There are certainly things I learned in stat that I use every so often, but nothing in relation to a programming task. In my high school, I had to choose between AP stat and calc and calc would have helped a lot more in college. Granted, for my line of programming, calc doesn't help either, but it would have helped more in obtaining the degree.

Have you ever needed to make an informed choice of pseudo- (or quasi-) random number generator? The first 200 pages of Knuth volume 2 (Seminumerical Algorithms) is highly enlightening for programmers, in my opinion, and reads better if you know the standard statistical distributions. Also, the more you know, the more likely it is for you to establish important relationships between concepts which are seemingly unrelated. People seem to mi

is a good starting point but probably needs to be combined with some type of 'critical thinking' class. I also think the question may be better off inverted - it would be far better for students to understand what code cannot and/or should not do.

I spend a lot of time writing R code, with occasional forays into SAS-land. But I don't really consider it a coding opportunity, nor would I want people like me to do the actual lower-level coding that is needed to make these software packages work adequately (yes, I know that lots of function in R are written in R, but there's still a majority of C/Fortran code under the hood. Because I'm not a computer scientist or a software engineer. I can write ok code in that it runs, does what it needs to do, and is

In fact, the whole blog-post is full of similar bullshit. Here's an example: "Computational thinking for scientists, engineers, and other professionals further means being able to: [ ] Discover new science through analysis of large data". What is that even supposed to mean? Science doesn't get "discovered", it develops. It's a methodology. The analysis of the data (large and small) is the science. Never mind the fact that the "definition" itself of "computationa

In over 20 years as a professional programmer, I have met many, many good programmers. In the same time period, I have met maybe 3 competent program managers (or business analysts, or whatever they call them in your neck of the woods). I'm lucky to be working with a great program manager right now and it is amazing what a difference it makes. I would easily trade half my team for that one person. There will be a lot of people here who have *never* worked with a competent PGM.

What you describe is a Program/Project Manager. But the same principles apply to a Business Analyst. In fact in my time in IT I have found that I end up doing more Business Analyst work because I understand the business, know SQL and programming so I can get the data I need, and I can process the data into something employees and managers can make decisions on. Often this is presented either as a web page or in Excel depending on needs.

The main purpose of AP Statistics (and AP Calculus) seems to be to teach limited subsets of the functionality of the TI-89 calculator series. [xkcd.com] The programmability features of that calculator are never taught in American schools.

Not that AP Computer Science is much better. Its main purpose seems to be to teach the Serious Programming Language du Jour, currently Java. Any algorithmic learning has to happen in between the struggles with that language.

I'm not pleased with the College Board's position in American society.

Finally. When I was in High School, calculators where not allowed. In HS Chem and Physics we could at least use slide rules. In Math, it was just pencil and paper. Most people need to learn to calculate in order to solve specific problems. Math as its known and taught today isn't the way to teach the general population to do either. I'd suggest that buying HS students a laptop and a copy of Mathematica, and then teaching them to use it, would pay for itself in terms of how swiftly both the general con

As someone with a BCS who has worked in the industry for over 10 years in an environment highly focused on algorithmic efficiency and performance, AND got a near failing grade in stats in university, I fail to see how being proficient at statistics would help one in computer science. What is important is computation theory and algorithm theory, which are not things you learn in statistics. Unless you are trying to write code that does everything using Monte Carlo simulations that is.

A comment like this shows a fundamental misunderstanding of algorithmic theory. You don't have to determine if an algorithm is performing more or less efficient through sampling or statistics, you can PROVE it using math.

I disagree that it is a component that is needed in computer science. I mean.. one should UNDERSTAND basic statistics just to operate in modern life, but this has nothing to do with CS at all. One should understand what a sample is, what standard deviation is, what mean vs median is, what the normal curve looks like, etc.. everyone should know this graduating from high school nowadays. If they don't then the school system is failing. None of this has anything to do with computer science though unless you a

Computer Science != chugging out code. Anyone who has actually gone through a Computer Science degree (I'm nearly done with mine) will tell you that it's not purely writing code. Analyzing algorithms and computational complexity, doing Math up to or beyond Linear Algebra, Set Theory, and Theory of Computation, and possibly (depending on chosen electives) learning about Cryptography, Database Design, and Artificial Intelligence indicates that learning about how computers work, what code does, how important i

I am a teacher who has taught math and electronics in a high-performing public suburban school and currently teach math and computer science in a comparably performing urban preparatory school.

There are several reasons why AP CS enrollment has flat-lined as AP Statistics has surged (here are three that came to mind immediately):

1) There are a lot more kids taking Algebra as 8th graders. These kids (assuming success through the American four year Algebra, Geometry, Algebra 2, Precalculus sequence) need a course to take senior year. Most high school teachers will suggest AP Calculus or AP Statistics as an option. My previous employer went from 1 section of AP Calculus when I started to 7 sections of AP Calculus and AP Statistics by the time I had left (enrollment declined slightly during that time). Yes, the average AP scores went down a little during that time --- but I still think it's a good thing that more kids are taking the classes.

2) Lots of math teachers are willing and able to teach AP Statistics, but few can teach AP CS. In most states you need a separate license to teach it. I teach at a private school, so no such license is necessary (my undergrad is in electrical engineering, most of my work experience was software, and thus I feel comfortable teaching the course). The topics covered on the A exam (the AB, or harder, exam that I took in high school no longer exists) are not trivial. Inheritance, interfaces, polymorphism, and sorting/searching algorithms are all presented. Data structures topics (linked lists, stacks, queues, etc.) are not taught but could easily be taught in a follow up course, since most students taking AP CS at my school are juniors. Some of my teaching colleagues who know how to program would struggle with the object-oriented focus of the exam given that they came up during the Pascal era.

3) In the era of budget cuts, if you can only get 15 students to register for AP CS, it will not run in many schools. Sometimes it's feasible to run it every other year, but often that doesn't work. Many kids who are interested in programming cannot fit two semesters into their high school schedules. AP Statistics, however, fulfills the fourth year of mathematics that many schools require and thus is easier to fit into the schedule.

Let me say that I very much enjoy teaching the course. The examination in CS is challenging and well written. There are some topics that I'd like to see added (file input / output is not typically covered). I am confident in my students' ability to take Data Structures as a freshman if they pass the exam with a 4 or 5.

IMOP the two subjects that are critical here and get neglected are logic and number theory. Logic typically gets covered as a first or second year course in college - after many years of courses that depend on it. Teaching it much earlier would make more sense and result in better comprehension of other subjects.Number theory is, in my experience, the branch of mathematics most relevant to programming. Far more relevant than either calculus or statistics, and (for me at least) much easier as well. Like logi

I agree in regard to logic. Critical thinking needs to be taught as early as the human mind can comprehend it. This is essential, and it isn't being done. I disagree that number theory is appropriate. Some of the applications of number theory are useful, certainly, but I couldn't apply number theory theory to either my CS or my Physics degree. I think Information Theory would be more useful, or Operations Research, even, for that matter.

The few AP courses available to me in high school were CRAP. They taught to the test; I got out of 2 semesters of Calc. I took Calc in college anyway and it was almost a different world.

All people care about are simplistic certifications - which is what the AP stuff is. It will gravitate an education into a certification training course and there is a big difference between the two of those. Forget actual understanding or building up skill level (aka IQ) in the area.

Some of CS is programming at very low levels doing stuff that for the most part is done by API's and the OS. Now some theory is good but an overkill of it while lacking other more needed / hands on skills is bad and leads to poor code / people who think that this will work but it does not work that well.

And on the other side you have people with the more hands on skills and some theory who can put out good code and can fix up the poor code.

The internet was world-changing. I have no doubt that in 1990-something more getting more programmers in the world was a very laudable goal. What do we need a world population filled with coders for now though? Endless UI permutations? Is there really a whole new, currently un-thought of world changing application just waiting to be written for the benefit of humanity? What is it, an iPhone game? Come on!

AP is such BS. It only exists to make parents feel like their kid is smart.

I agree with you in spirit, but not quite for the same reasons.

A student doing well in AP calculus really will do better when they take "real" calculus. And they will still have to take calculus in college, because colleges don't consider AP credits as actually satisfying any requirements, they consider them nothing more than an elective.

Congrats, kid, you busted your ass for the last year of Highschool and it got you out of

1) He's taking a harder course than the regular math course. That's smart.2) In most systems, an 'A' in an AP course counts for more than an 'A' in a regular class. It will increase your GPA. That's smart.3) AP courses will increase your odds of getting into the college you want and landing the scholarship you need. That's smart.4) Some AP courses can be used for college credit, allowing you to skip some entry-level classes. That's smart.5) Most of the dumb-fucks who like to make your life miserable in your

FWIW, my son wound up taking physics three years in a row: high-school physics (no AP offered that year), AP high school physics (beat taking Earth Sciences), and then when he got into a STEM college. The AP classes were more useful in areas less related to his major.

+50 this. If you want a real foundation that can make you a really damn good programmer in college and beyond, try to get an intro into Discrete Math. I'm sure that through iTunes U and other places online there are likely videos and instruction on Discrete Math if there are not any courses available to a HS student.

What makes you think school teaching methods have anything to do with "current educational theory"?They don't.My kid is* home schooled to, but my wife is one of those educational theorists. She has a PhD in it and when you know the data, you can see how badly schools are practicing teaching.

is* == was, but technically is now attending a public online school from home, which is neat. Best of both worlds.

Your view is common. I held it myself for a long time. I have since changed my mind. The real problem is that programming is taught very badly pretty much everywhere.

I spent 20 years as a programmer and then taught English as a foreign language for 5 years. I am now back programming, but I have started to apply what I learned as a teacher to programming. Just like programming, foreign languages are usually taught badly: the idea is to teach grammar and drill vocabulary. The students jam words together