Slashdot videos: Now with more Slashdot!

View

Discuss

Share

We've improved Slashdot's video section; now you can view our video interviews, product close-ups and site visits with all the usual Slashdot options to comment, share, etc. No more walled garden! It's a work in progress -- we hope you'll check it out (Learn more about the recent updates).

I took AP Computer Science in 10th grade, scored a 2 on it. I had some friends who were passionate about programming (doing it outside of High School like myself in C++) who ended changing their career choice just off of that test score, who also got 2s. On one hand, yes the AP class was great in that I got good practice every other day in C++ with a pretty good teacher there to ask questions, but the test itself I found very one sided for the folks who were great test takers. Just because I scored a 2, doesn't reflect the teacher's ability to convey how to do a linked list nor does it really reflect a student's abilities.

The emphasis in High School today shouldn't be "well Johnny you probably won't score a 3 so don't bother taking AP CS", but "Johnny we see you're really passionate about programming, why don't you take AP CS?"

Throughout my entire educational career, I was a slacker. I got decent grades (if not straight A's) without studying, paying much attention in class, or doing homework. I have a natural aptitude for the humanities and the sciences, and am adequate in math. (Better with applied vs. theoretical math.)

My one exception was foreign languages; I have absolutely no ability whatsoever in foreign languages. In American, I can speed-read, and have reasonable facility with writing. In any other language, it mattered not at all how much I studied, practiced, or did my homework, I was horrible, even by the low standards of an American high-school foreign language class. French, Latin, even American Sign Language as an adult, and I was hopeless. I got barely passing grades in French and Latin out of pity more than anything else.

Some difficult things are simply difficult for some people, and no amount of hard work is going to fix that. Throwing students against subjects they are unable to master is a waste of resource and is discouraging for both the student and teacher. I'm not saying students shouldn't be challenged; just that the idea that "hard work" will magically enable a student to master any subject is toxic.

At the most obvious and shallow, computers are good at crunching numbers quickly, and early programming languages were designed to put that power to good use. But nowadays, at least at the application programming level, the focus of average programmers' work tends to be much more on string processing (for web pages, twitter feeds, etc.) and storage/retrieval (databases, etc.) There are certainly mathematical implications of that work, but not so much numerical math.

Then at the much deeper level you find out that graph theory, topology, and computability have powerful connections to type systems, program correctness proofs, etc. I suspect that my mind can only hold a small fraction of the interesting connections in this area. This is what I'd call serious, deep Computer Science, and this is where I see it really tying in fundamentally to math. To me, this is the purest form of CS, and most CS grads barely grok it and/or care about it. Advances in this area are probably like advances in pure mathematics: it may take decades or even centuries for us to understand their application to the software development changes right in front of us, but when we do, they're transformative. Although maybe that's over-selling it a little.

Actually parental involvement is the very last thing kids need in the educational process. There is a school in Harlem that offers stunning success to low income kids and the way they do it is allowing the kids to visit their homes on Sundays only. These kids are in a learning environment every waking moment during the week. Even hours of sleep are scripted so that being lazy is not an option. So far they have a zero drop out rate, a zero failure rate and every single kid has gone on to complete a degree in college. That is what can be done with ghetto youth.

I teach a section of AP Computer Science, so I'm getting a kick out of these replies...

To people who don't have any programming experience coming in to the course, the class is a real bear. One of the big issues from the early days of the exam was the push-and-pull between high school instructors and college professors over just what an AP computer science student should proficiently be able to do.

The professors won, and began to dominate the content choices of the course and the exam. Of course, they were full of shit when they did so, and found that people who passed the course weren't usually well prepared for additional CS courses unless they had additional experience outside of APCS. This means that APCS wasn't the predictor it should have been. So there's been all kinds of fun content changes over the years. (I'm not talking about the language change from Pascal to C++ to Java; the material on the exam will be changing about 20% for just the coming year, for example, and I'm making sure I'm at an AP seminar this summer so I can properly prepare.)

As trite as it sounds, part of the challenge is funding. In Texas, where I teach, AP Computer Science is funded with the usual tax dollars, where "business programming", which is too often VB-oriented, is funded at a higher level, making it a more attractive course if you're going to teach programming. Districts and high schools are financially disincentivized from offering this course, and lesser resources are generally available.

Want to teach Microsoft Office? Here, have a brand new lab. Then have a new one three years later. Want APCS? We're sure we can scrounge up something for you. And then they wonder why no one teaches AP Computer Science. Don't get me wrong; I actually think there's a lot of value to be gained out of a properly taught Office course with proper content. But the imbalance is too great.

About 5 years ago, I was asked to go to a meeting of all of the AP teachers of the East region of Houston ISD, in order the share information and resources. (This was back when they grouped schools by geographic regions.) I really didn't want to go, but our counselor convinced me that it was important. So many if not most of the AP teachers are sitting there on gym bleachers. And we're told to meet our cohorts and talk amongst ourselves. And all of these signs go up for the different courses -- US History, Spanish, etc. And I'm sitting there at Computer Science. Then I look to my left, look to my right. And I realized that I'm the only one.

Does it pay off to work hard? I have to do help desk stuff (in addition to my actual job duties as a programmer). I encounter people that aren't qualified to press F1 on a daily basis. That is people that don't know to press it and can't comprehend basic instructions once they do. I see these people screwing off on facebook/cnn/etc all day long. Some of them get paid considerably more than me. I have these extra duties because I am knowledgable and work hard to improve myself through learning.