College Board Kills AP Computer Science AB
jhealy1024 writes "The College Board recently announced it will be getting rid of the Advanced Placement Computer Science AB examination after May 2009. The 'A'-level exam will continue to be offered, though there is no word yet on what will become of the AB-level material (e.g., if it will be merged into A or just dropped). Many teachers of AP CS are upset about the move, as it seems the decision was made without consulting members of the CS teaching community. As one teacher put it: 'this is like telling the football coach next year is the last year you have a varsity team.'"
CS instructors at the high school level will have much broader latitude in what they teach. You could go a vocational route (say, Rails), or a different theoretical route (say, The Little Schemer).
I also think it's possible that the contents of AB need to both go into A. It's been a long time since I took them both (1989), so things may be different, but my recollection is that the contents of A alone really weren't much beyond pragmatic familiarity with basic imperative programming, the kind of stuff that your basic "Teach Yourself X in Some Ridiculously Short Period of Time" book can actually teach you.
That said, if what they're doing has the effect of dropping the study of data structures and algorithms from the high school curriculum -- if dropping B really means there will be less CS in the classroom -- then this is a really poor move.
Tweet, tweet.
I keep hearing people say things like "course X used to be in C++ and now its in java and thats bad". What exactly is it that is so great about C++ for learning fundamentals that you dont get in java? The only thing I can think of is understanding pointers and how memory is laid out. But that really falls outside the scope of algorithms and data structures which is what intro level CS is really all about.
They also cut Italian, Latin literature, and French literature.
As a college teacher, I'm uncomfortable with the place that AP exams now occupy in our educational system. When I went to college, it was considered unusual to take AP exams, and nobody had ever heard of a GPA higher than 4.0. Now, with AP classes counting +1 on the GPA, Berkeley is turning away a sizable fraction of all students with 4.0 GPAs. In other words, you essentially can't get into the flagship schools of the UC system unless you have a lot of AP exams to puff up your grades. In one way this is good, because the old system encouraged kids not to take challenging coursework in high school. But a lot of rural and inner-city high schools don't offer AP courses, or don't offer more than one or two, or they offer them, but they're not at a high enough level to prepare you for the exams. There's something horribly wrong with a system of government that taxes working-class people in order to support public education, but effectively excludes their kids from getting the full benefit of the system they're supporting with their taxes.
Looking over the contents of the CS exams, I can't help getting the impression that this is vocational education masquerading as something more academic. It all seems to be focused on the OOP fad, and on being able to code in Java. Stacks and queues are only covered on the AB, not the A level!?!? The hardware part seems pretty lightweight, and there's virtually no theory AFAICT.
Find free books.
Or you could take AP Pascal, like I did in H.S. (Class of 1992). Problem is, they pretty much had to have the math teachers draw straws to see who got "stuck" with the ten brainiacs who took the course, and you also had stuff like "Pascal has bad string handling because it's a math language" (which isn't technically true) and then you find out that it doesn't have a built-in function for doing anything other than square or square root. You had to code your own exponent function, which wasn't a big deal, but it made you wonder why they bothered with a built in half-assed function in the first place.
Also, we did it completely wrong IMHO. We learned the material that was on the A part of the exam for most of the year, which was basic structured programming, etc. Nothing out of the ordinary. Then, for the last MAYBE two weeks, we tried to learn what was on the B part, which was (mainly) stacks and pointers. For one thing, that was kind of bolted on to Pascal back in the day. For another, you can't really teach this "this is why you should care about this" in a mere two weeks. You can spit out a few examples in a vaccuum and hope that your students regurgitate them, but in our case that went so poorly that I think out of the ten of us in the class - all of which had 3.8 (unweighted) GPAs or higher, over half of us didn't bother taking the AB and of the other fraction of the class, only two of them got a 3 or higher on it, which was what the colleges wanted for credit. The rest of us (me included) were perfectly happy to "relearn" how pointers and stacks worked in a freshman college level C course.
Problem is, that was right when OO was kind of taking off, and everyone and their fucking sister was trying to bolt OO philosophy into EVERY CS course, even when good old-fashioned procedural thinking would have been fine. So you weren't learning C, you were learning just enough C so they could teach you C++...
Sometimes you just need a hammer and not a super-duper compressed nail gun.
Our AP CS class back in the 80's had nothing but 3 commodore pets and one MicroVax running some flavor of Unix (thank god!) tied to 12 VT-100s. We were living high on the hog.
We spent the first 6 months learning first to hand assemble code for the Pets and program it using their built in screen based memory editor. We had to write simple multipliers/dividers, etc. It required learning about memory, registers, and basic ALU structures.
Only after this point were we "graduated" to the MicroVax and were given the choice of working with C or Pascal. I'll tell you what: no-one complained about having to learn vi(1), and everyone appreciated the power of a good compiler and why higher order languages were wonderful inventions.
To this day, that course was by far the most valuable class regarding computer programming I've ever taken. It really has provided me with a great deal of appreciation of what's already been done for me in terms of tools.
I happen to work on embedded systems, with C++ when I can, C when I need to and assembly when nothing else will do. I've met a lot of college grads that just cannot work in the embedded world with nothing but Java courses from their college background. There's a lot of software out there running on OS's (or not) that don't provide run-times with built in garbage collection, etc.... I'm not sure that's such a bad thing...
I also wrote that exam in C++, and I must have written it at the same time as you because we also had that fish case study. Ironically, my teacher didn't tell us about the case study until a week before the exam. Instead of working on the case during the semester, I spent 99% of my time creating my own text adventure. Making my own game was great, because I kept having to learn things so I could add more functionality. I don't think I ever learned any subject quite as well; it's amazing how motivated you can get if you enjoy the activity. In the end, missing out on the case study didn't hurt me, since they provided all the code for the case at the back of the exam anyway.
Perhaps the exam is unpopular due to the way the course is taught. If I was forced to work on that case study all semester, I definately would not have learned as much as I did. Maybe the AP board needs to cut the exam, restructure the program so it's more fun and interesting, and then re-release it.
It would appear they didn't even consult or even inform the group of people who prepare the curriculum and write the exams either. Clearly, they had already made up their mind to ditch it and didn't want to inconvenience themselves with a justification of it. Ah well, I guess AP/A will now tank, and districts will go "Hmmm, AP/A wasn't getting our kids any college advantage, and now there's just it to offer, so let's save ourselves some money and drop ComSci completely from our course offerings. After all, computers are expensive, where can you find teachers willing to do it etc etc blah blah." I guess the states or the federal government (yeah, it's not a realistic view) might want to take on setting up a decent 9-12th grade ComSci course sequence to make sure that ComSci teaching doesn't completely collapse in the US.
Actually, the MIT course has switched to Python.
I say it's great that they're killing that particular AP exam. All throughout my university years, any time I ran into another student that claimed to have received a 4 or 5 on either the CS A or CS AB exams, they invariably were absolutely terrible at doing such basics as determining the big-O of a function, or how operator precedence works, or how to use compiler error messages to track down syntax errors. You can keep the courses, but the only point to the exam is to try to skip out of the intro course in college, which IMO is a bad idea; want to skip out of the intro course, do it the same way you skip out of intro language courses, or math courses... take a placement exam based on the actual course(s) final exam(s).
Interestingly, my AP Chemistry Teacher was the gym teacher subbing for the chem teacher who moved to a new school. We taught him grade 12 chemistry so he could teach the next year, while we taught ourselves AP Chem (I got a 4).
The previous semester, our Chem 12 class had pooled our money to hire a university professor for 3 hours 1 day a week, since that teacher was so bad.
People really aren't interested in programming in the first case, and fewer and fewer companies really care to hire people who 'know computers' more than the very basic fundamentals. I don't believe we are in a 'programmer crisis, or that there is an 'I.T. worker shortage'. Its all just a big pile of steaming rubbish told by Bill Gates, because no one is interested in making him yet another billion dollars, while he pays them somewhere between scale and minimum wage. But its a common story. Why pay anyone in the first world to write software, when you can pay someone in the 3rd world two pennies on the dollar to do the job? Shipping software worldwide is much faster than any other kind of shipment, and no Kathy Lee Gifford problems happen with software. No one cares where it comes from, or what sweat shop made it. That the course is being dumped is no surprise, the only thing that made me raise my eyebrows is that its being done now. It should have been done 7 years ago.
Except that most of what was in 6.001 will be taught in Java in the new 6.005, which for its type of material is Not Even Wrong.
Even the AI course will be switched to Python. Very soon, the MIT EECS undergraduate curriculum will be entirely purged of Scheme/LISP, although due to some furious demand (especially outside of the department, since 6.001 is generally useful while the new introductory curriculum is strongly focused on both EE and CS) there is talk of a reduced, 3/4 size return of 6.001. Someday. Maybe.
I've just received word that the Emperor has dissolved the MIT computer science program permanently.
As a Chemistry major who was fortunate to take 6.001 about the last time Sussman gave it, I'm not sure what to think about the changes. Programming languages and the content of 6.001 are the only things that I find really interesting in CS, and I think it's hard to deny that we're in a Dark Age in this general area.
And perhaps MIT is redefining what "CS" means in a good way, it's just not anything I'm very interested in, nor qualified to judge. Ableson and Sussman fully support the new curriculum BTW, and Hal has been heavily involved in the development of at least 6.01. Sussman has always believed introductory EE and CS should be taught together, and 6.01 and 6.02 most certainly do that.
On the bright side, the new introductory course 6.01 (don't know if this is true about 6.02) is very instructor intensive, enough so that they are enlisting all interested upperclassmen to help in the labs and such, which I think is a very good thing; you don't tend to really learn your subject until you try to teach it.
And with enrollment down so sharply, there are now likely enough professors and graduate students to support these new intense courses; MIT's historical practice of not allowing a fashionable department to get "too big" is once again validated (think of areo/astro in the '70s). The much lower enrollment is an opportunity to teach in a very different way, with more emphasis on building things, an MIT tradition from its founding.
But it is safe to say that an MIT CS or CS focused degree (most students do the combined major that is heavy in both) will mean something very different in four years.